0

根据来自 Mircrosoft 的这个 C# 代码,有一个标准的日期格式,例如:

//       R: Sun, 15 Jun 2008 21:15:07 GMT 

我的 C# 代码使用“r”,如下所示:

webRequest.Date.ToUniversalTime().ToString("r")

如何在 Java 中创建这样的标准日期格式?

到目前为止我有这个:

this.timestamp = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss z").format(new Date());

但是,我不知道我是否应该尝试写一些与之匹配的东西,或者是否有更好的方法。我担心我会犯错误,某些日期将无法正常工作。

4

1 回答 1

4

如何在 Java 中创建这样的标准日期格式?

查看格式的文档r

自定义格式字符串为“ddd, dd MMM yyyy HH':'mm':'ss 'GMT'”。使用此标准格式说明符时,格式化或解析操作始终使用不变区域性。

[...] 因此,应用程序必须在执行格式化操作之前将日期和时间值转换为 UTC

因此,您将自定义格式字符串翻译成SimpleDateFormat, * 并确保指定时区 (UTC) 和区域设置(美国英语与不变文化足够接近):

DateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss 'GMT'",
                                         Locale.US);
format.setTimeZone(TimeZone.getTimeZone("UTC"));
String text = format.format(date);

那就是如果你想匹配 .NET 格式的r格式。就我个人而言,我会使用 ISO-8601 格式,例如

DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
                                         Locale.US);
format.setTimeZone(TimeZone.getTimeZone("UTC"));
于 2013-09-25T19:34:32.357 回答