Javascript asp.net mvc datetime按客户端日期格式进行动态验证

Javascript asp.net mvc datetime按客户端日期格式进行动态验证,javascript,asp.net-mvc,datetime,validation,Javascript,Asp.net Mvc,Datetime,Validation,我有一个自定义属性,用于给定dateformat的DateTime验证,还有javascript验证器,它们为我提供客户端和服务器端验证。但现在我应该更改我的日期时间验证,以便它将根据客户端的本地日期时间格式执行,我不知道如何执行 我找不到任何对我有帮助的东西 因此,请告诉我如何至少实现客户端日期时间验证,或者如何通过javascript获取客户端的日期格式。如果您可以确定用户的区域设置,您可以使用.Net全球化类来帮助服务器端解析日期时间字符串。例如: //解析为1月4日 var dt1=Da

我有一个自定义属性,用于给定dateformat的DateTime验证,还有javascript验证器,它们为我提供客户端和服务器端验证。但现在我应该更改我的日期时间验证,以便它将根据客户端的本地日期时间格式执行,我不知道如何执行

我找不到任何对我有帮助的东西


因此,请告诉我如何至少实现客户端日期时间验证,或者如何通过javascript获取客户端的日期格式。

如果您可以确定用户的区域设置,您可以使用.Net全球化类来帮助服务器端解析日期时间字符串。例如:

//解析为1月4日
var dt1=DateTime.Parse(“1/4/2013”,新文化信息(“en-US”);
//解析为4月1日
var dt2=DateTime.Parse(“1/4/2013”,新文化信息(“en GB”);
但最好的办法是完全避免这种情况。在JavaScript代码中,以ISO8601字符串的形式获取该值-这是区域性不变的。本机浏览器对此的支持各不相同。内置函数在IE9+中工作

//返回ISO格式的日期(UTC)。
var s=yourDate.ToISOString();
获得完全浏览器支持并获得ISO日期而不转换为UTC的一种方法是使用库,其中ISO8601是默认格式:

// This returns an ISO formatted date, with the user's local offset.
var s = moment(yourDate).format();

// This returns an ISO formatted date, in UTC.
var s = moment(yourDate).utc().format();
当您将这些值发送到服务器时,您可以在.Net代码中解析它们,而无需考虑区域性。格式已经是区域性不变的。为了防止服务器的时区干扰,您应该将它们解析为
DateTimeOffset

//假设这是从客户端获得的ISO值:
var s=“2013-04-20T09:00:00-07:00”;
//简单地解析它
var dto=DateTimeOffset.Parse;
//如果您不关心此时的偏移量:
var dt=dto.DateTime;
当然,如果你想优雅地失败,你可以这样做:

DateTimeOffset dto;
var isValid=DateTimeOffset.TryParse(s,out dto);

非常感谢您的回答,但实际上我的问题是验证用户的日期输入,使其格式符合其区域性的日期时间格式,否则不允许发布。@Gohar-您需要了解其区域性设置,然后才能使用
DateTime.TryParse
。关于检测用户的文化信息,还有一些其他问题。