Datepicker没有在阿拉伯文化中设置日期

时间:2016-05-09 05:32:20

标签: c# jquery asp.net asp.net-mvc datepicker

我有多语种网站。 但是当我将我的文化改为阿拉伯语时,然后在表单提交后它不发送日期。 这是我的模型类

        [Required(ErrorMessage = "Company foundation date is required.")]
        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:d MMM yyyy}", ApplyFormatInEditMode = true)]
        public DateTime CompanyFoundationDate { get; set; }

我的观点

@Html.TextBoxFor(m => m.CompanyFoundationDate, new { @class = "form-input", id = "foundationDate" })

在Jquery里面我写了这个

        $.datepicker.setDefaults($.datepicker.regional['en']);
        $("#foundationDate").datepicker(
       {
           dateFormat: 'd M yy',
           changeMonth: true,
           changeYear: true
       });
        $("#foundationDate").datepicker('setDate', '@(Model.CompanyFoundationDate.ToDatePickerFormate())');
        $("#foundationDate").datepicker('option', 'maxDate', new Date());

当我将文化改为英语而不是阿拉伯语时,工作正常。

在阿拉伯语中我选择的日期是2009年2月12日,但在我的行动得到{0001-01-01T00:00:00}

2 个答案:

答案 0 :(得分:0)

var cultureInfo = CultureInfo.CreateSpecificCulture("ar-SA");
cultureInfo.DateTimeFormat.Calendar = cultureInfo.OptionalCalendars[5];

var dateTimeString = new String(new[] {
  '1',
  '4',
  '-',
  'ي',
  'و',
  'ل',
  'ي',
  'و',
  '-',
  '2',
  '0',
  '1',
  '5',
  ' ',
  '0',
  '4',
  ':',
  '4',
  '4',
  ':',
  '5',
  '1',
  ' ',
  'م'
});
var dateTime = DateTime.Parse(dateTimeString, cultureInfo);


The resulting DateTime is:

2015-07-14T16:44:51

If you want to use DateTime.ParseExact the format is d-MMMM-yyyy hh:mm:ss tt:

var dateTime = DateTime.ParseExact(dateTimeString, "d-MMMM-yyyy hh:mm:ss tt", cultureInfo);

You should also consider using DateTime.TryParse or DateTime.TryParseExact for better flow of code if you encounter an invalid formatted string.

答案 1 :(得分:0)

  

但是当我将我的文化改为阿拉伯语时,则表格提交后不发送日期

因为您尝试使用“en”区域设置输入发送表单。

 $.datepicker.setDefaults($.datepicker.regional['en']);