javascript - 如何以正确的格式从js获取日期?月和日颠倒

标签 javascript c# jquery asp.net-mvc

我正在调用一个 ajax 来获取一些用于编辑数据的值。 作为我的对象的一部分,我正在发送日期字段。 我的问题是,当我在 Controller 中收到日期值时,日期格式错误 - 我的日期和月份颠倒了。因此,我无法在需要的地方比较它们。 但是我的月份和日期是相反的。例如,它返回 3 月 10 日,而不是 10 月 3 日。 如何解决这个问题? 我在这样的对象中从 js 发送日期字段:

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

在我的 Controller 中我尝试了:

DateTime dateToCheck = Convert.ToDateTime(dto.Date);

最佳答案

您应该知道的第一件事是使用 Convert.ToDateTime() 进行日期解析取决于服务器中使用的当前文化(您可以使用 CultureInfo.CurrentCulture 属性进行检查).您可以尝试其中一种方法在 Controller 操作方法中正确解析 JS 日期格式:

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

这种方式需要在解析日期之前指定日期格式:

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

2) 以 ISO 8601 格式使用 DateTime.ParseExact()/DateTime.TryParseExact()

使用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) 在使用DateTime.TryParseExact() 时,可以使用if 条件来检查日期字符串是否有效:

DateTime dateToCheck;
if (DateTime.TryParseExact(dto.Date, dateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateToCheck))
{
    // do something
}

关于javascript - 如何以正确的格式从js获取日期?月和日颠倒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52619150/

相关文章:

c# - 如何将网络摄像头视频+音频发送到rtsp/rtmp服务器

c# - 检测何时将选项卡项添加到 WPF 选项卡控件

jQuery 悬停功能,无法按预期使用段落标签

javascript - 如何在functions.php(wordpress)中加载 Bootstrap 脚本和样式?

javascript - 使用 javascript/jquery 检测移动浏览器的最佳方法?

c# - 如何以编程方式打印各种文件类型

javascript - 如果我在密码字段中添加 # 作为模式,如何禁用提交按钮

javascript - 页面完成后加载文件而不重定向

javascript - 如何通过单击按钮将现有模板呈现为单独页面上的弹出表单?

javascript - insertbefore 并找到 css 类 - js 不工作