Java日期和标准格式

时间:2013-09-25 19:28:26

标签: java date

根据this C# code from Mircrosoft,有一个标准的日期格式,例如:

//       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());

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

1 个答案:

答案 0 :(得分:4)

  

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

查看the documentation for the r format

  

自定义格式字符串是“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"));