代码之家  ›  专栏  ›  技术社区  ›  Alexander

如何以正确的格式从JS中获取日期?月和日颠倒

  •  0
  • Alexander  · 技术社区  · 7 年前

    我打电话给Ajax是为了获取一些编辑数据的值。 作为对象的一部分,我正在发送日期字段。 我的问题是,当我在控制器中收到日期值时,日期格式是错误的-我的日期和月份是相反的。因此我不能在需要的地方比较它们。 但我的日子和月都变了。例如,它不是10月3日而是3月10日。 如何解决这个问题? 我在这样的对象中发送来自JS的日期字段:

    ExamsDataU = {
                classId: classIdValue,
                date: dateValue
            };
    

    在我的控制器里,我尝试了:

    DateTime dateToCheck = Convert.ToDateTime(dto.Date);
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   Tetsuya Yamamoto    7 年前

    你首先应该知道的是日期分析 Convert.ToDateTime() 取决于服务器中使用的当前区域性(可以使用 CultureInfo.CurrentCulture 财产)。您可以尝试以下方法之一在控制器操作方法中正确解析JS日期格式:

    1)使用 DateTime.ParseExact() / DateTime.TryParseExact() 使用自定义格式

    这样,在分析日期之前必须指定日期格式:

    // specify custom format
    string dateFormat = "dd-MM-yyyy";
    DateTime dateToCheck = DateTime.ParseExact(dto.Date, dateFormat, CultureInfo.InvariantCulture);
    

    2)使用 日期时间.ParseExact()) / 日期时间.typarseexact() 采用ISO 8601格式

    使用 date: dateValue.toISOString(); 要将JS日期转换为ISO 8601格式,然后将其转换:

    // specify ISO format
    string dateFormat = "yyyy-MM-ddTHH:mm:ss.fffZ";
    DateTime dateToCheck = DateTime.ParseExact(dto.Date, dateFormat, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind);
    

    这种方法比前者更好,因为不需要在客户端编写额外的日期表示代码,也可以根据需要将日期表示调整为本地时间。

    笔记:

    a)对于指定的区域性,可以尝试 CultureInfo.GetCultureInfo() :

    var culture = CultureInfo.GetCultureInfo(CultureInfo.CurrentCulture.Name);
    DateTime dateToCheck = DateTime.ParseExact(dto.Date, dateFormat, culture);
    

    b)你可以使用 if 使用时检查日期字符串是否有效的条件 日期时间.typarseexact() :

    DateTime dateToCheck;
    if (DateTime.TryParseExact(dto.Date, dateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateToCheck))
    {
        // do something
    }
    
        2
  •  1
  •   Potato    7 年前

    试试这个

    var date = new Date('2014-01-06');
    var newDate = date.toString('dd-MM-yy');
    

    var dateAr = '2014-01-06'.split('-');
        var newDate = dateAr[1] + '-' + dateAr[2] + '-' + dateAr[0].slice(-2);
    
    console.log(newDate);
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>