繁体   English   中英

Timeago的DateTime本地化问题

[英]DateTime localization issue with timeago

我正在将GB格式的日期输出到我的浏览器: 01/06/2012 15:50:01 -03:00 (2012年6月1日)

这是使用DateTimeOffset.ToString()在C#服务器上完成的

我想在这个日期使用jQuery.timeago。 一切正常,除了一个问题:jQuery.timeago将上述日期解析为01/06/2012 15:50:01 -03:00 (2012年1月6日)

一种解决方案是只执行DateTimeOffset.ToString(formatStringHere) ,但是这需要与语言环境无关地工作,因此我不确定该解决方案是否可以工作。

您不能依靠无参数的DateTimeOffset.ToString()方法来区分文化。 我建议使用往返格式说明符( "O""o" )根据ISO 8601标准(以便在所有区域性下都能正确解析)明确地格式化日期,同时保留时区信息。

从MSDN:

DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
DateTimeOffset dateOffset = new DateTimeOffset(date1, 
    TimeZoneInfo.Local.GetUtcOffset(date1));
Console.WriteLine(dateOffset.ToString("o"));
// Displays 2008-04-10T06:30:00.0000000-07:00 

timeago网站似乎表明它支持ISO 8601。

编辑"o"格式说明符等效于以下自定义格式字符串:

"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffzzz"

如果要将精度限制为毫秒,可以将其调整为:

DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
DateTimeOffset dateOffset = new DateTimeOffset(date1, new TimeSpan(-7, 0, 0));
Console.WriteLine(dateOffset.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffzzz"));
// Displays 2008-04-10T06:30:00.000-07:00

使用ISO-8601标准:YYYY-MM-DDTHH:mm:ss.sssZ在C#和Jquery中传递日期时间。 平均值使用两个值之一用于显示,一个使用JQuery。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM