Я создаю многоязычное веб-приложение MVC 4 (английский, испанский, арабский...), для части интернационализации я следил за этим учебным пособием, все до сих пор прекрасно, за исключением небольших деталей, при выборе арабского языка все данные даты отображаются в Hijri (02/04/1436), когда я хочу григорианский календарь, и поскольку мне нужно, чтобы CultureInfo была динамичной, я не могу установить стандартную/глобальную культуру для веб-приложения. есть ли способ решить эту проблему, указав дату принятия конкретной культуры?
Модель
[Display(Name = "EntryDate", ResourceType = typeof(Resources.i18n))]
[DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime EntryDate { get; set; }
Посмотреть
<td>@Html.DisplayFor(modelItem => item.EntryDate)</td>
Я нашел его, спасибо всем.
CultureInfo arSA = new CultureInfo("ar-SA");
arSA.DateTimeFormat.Calendar = new HijriCalendar();
var dateValue = DateTime.ParseExact("29/08/1434", "dd/MM/yyyy", arSA);
он возвращается 7/7/2013
Вы можете использовать приведенный ниже код, чтобы получить культуру на основе выбранной опции и соответствующим образом преобразовать дату.
CultureInfo us = new CultureInfo("en-US");
string shortUsDateFormatString = us.DateTimeFormat.ShortDatePattern;
string shortUsTimeFormatString = us.DateTimeFormat.ShortTimePattern;
Это поможет вам получить контроль над датой на основе выбранного варианта и отобразить их в вашем конкретном формате.