要获得当前时刻的ISO 8601格式表示,最优雅的方式是什么?它应该看起来像:2010-10-12T08:50Z
。
示例:
String d = DateFormat.getDateTimeInstance(DateFormat.ISO_8601).format(date);
``
发布于 2010-10-12 20:10:25
使用SimpleDateFormat
格式化所需的任何Date
对象:
TimeZone tz = TimeZone.getTimeZone("UTC");
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'"); // Quoted "Z" to indicate UTC, no timezone offset
df.setTimeZone(tz);
String nowAsISO = df.format(new Date());
使用如上所示的new Date()
将格式化当前时间。
发布于 2010-10-12 21:05:00
对于默认时区不是UTC的系统:
TimeZone tz = TimeZone.getTimeZone("UTC");
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'");
df.setTimeZone(tz);
String nowAsISO = df.format(new Date());
如果经常需要,可以将SimpleDateFormat
实例声明为全局常量,但要注意该类不是线程安全的。如果被多个线程并发访问,则必须同步。
编辑:如果做很多不同的时间/日期操作,我更喜欢Joda Time…
EDIT2:已更正:setTimeZone
不接受字符串(由EDIT2更正)
发布于 2013-01-11 16:36:17
来自Apache commons-lang3
的DateFormatUtils具有有用的常量,例如:DateFormatUtils.ISO_DATETIME_FORMAT
https://stackoverflow.com/questions/3914404
复制相似问题