gpt4 book ai didi

javascript - 处理国际申请的日期时间格式

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:48:03 26 4
gpt4 key购买 nike

在国际应用程序的客户端(javascript、ajax)和服务器(ASP MVC)之间处理DateTime格式的首选做法是什么?

根据我的研究:

  • 服务器格式:yyyy-mm-dd
  • 客户端格式:yyyy-mm-dd

用自定义模型绑定(bind)器覆盖 ASP MVC 的 DateTime 模型绑定(bind)器

    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
try
{
var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
return value.ConvertTo(typeof(DateTime), CultureInfo.InvariantCulture);
}
catch (Exception ex)
{
return new DateTime();
}
}

并在客户端格式化日期:

    function toISOString(d) {
var year = d.getFullYear();
var month = d.getMonth() + 1;
var date = d.getDate();
return year + '-' + month + '-' + date;
}

最后一个问题 - 设置了以上内容后,服务器如何检查客户端的DateTime offsetTimezone offset(如果在执行之前必须考虑)进入应用程序?

最佳答案

输出为 ISO 字符串是正确的方法。

使用 JavaScript DatetoISOString 可能会让您受益。由于并非每个浏览器都支持它,因此您需要为不支持的浏览器提供它:

if ( !Date.prototype.toISOString ) {
( function() {

function pad(number) {
var r = String(number);
if ( r.length === 1 ) {
r = '0' + r;
}
return r;
}

Date.prototype.toISOString = function() {
return this.getUTCFullYear()
+ '-' + pad( this.getUTCMonth() + 1 )
+ '-' + pad( this.getUTCDate() )
+ 'T' + pad( this.getUTCHours() )
+ ':' + pad( this.getUTCMinutes() )
+ ':' + pad( this.getUTCSeconds() )
+ '.' + String( (this.getUTCMilliseconds()/1000).toFixed(3) ).slice( 2, 5 )
+ 'Z';
};

}() );
}

直接取自MDN toISOString .我使用它,我希望大多数其他人也是。

请注意 Z 代表祖鲁时间 (GMT)。您可以只使用午夜 (T00:00:00.000Z) 来表示没有时间。就个人而言,我倾向于不关心我所做的事情的毫秒部分,我会忽略它(时间分辨率精确到秒)。

只要您对 ISO 格式进行标准化,就可以在必要时轻松地为服务器和客户端编写简单的解析器。

对于 MVC 中的 DateTime 绑定(bind),您应该使用 described in this answer 方法解析传入的值。 .日期/时间解析的关键是一致性,只要您可以依赖 ISO 格式(使用 T 或使用空格),就可以轻松管理它。

关于javascript - 处理国际申请的日期时间格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17509142/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com