[英]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.