0

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

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

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

一种解决方案是只做 a DateTimeOffset.ToString(formatStringHere),但这需要与语言环境无关,所以我不确定该解决方案是否有效。

4

2 回答 2

1

您不能依赖无参数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
于 2012-06-01T20:45:01.280 回答
0

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

于 2012-06-01T20:49:13.903 回答