根据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());
但是,我不知道我是否应该尝试写一些与之匹配的东西,或者是否有更好的方法。我担心的是我会犯错误,某些日期不起作用。
答案 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"));