一种将当前日期时间转换为 ISO 8601 格式的优雅方法 [重复]

Posted

技术标签:

【中文标题】一种将当前日期时间转换为 ISO 8601 格式的优雅方法 [重复]【英文标题】:an elegant way to transfer current date time into ISO 8601 format [duplicate] 【发布时间】:2014-10-25 19:04:06 【问题描述】:

我需要将当前日期时间转换为 ios8601 格式,例如:

日期和时间格式:01 Jan 2014 BST 12:00 PM

最终在我的jsp中,我希望将格式化的日期放入

<time datetime="date and time in ISO8601">date and time in format: 01 Jan 2014 BST 12:00 PM</time>

我目前的尝试:

    TimeZone tz = TimeZone.getTimeZone("BST");
    DateFormat df = new SimpleDateFormat("dd-MM-yyyy'T'HH:mm'Z'");
    df.setTimeZone(tz);
    String nowAsISO = df.format(new Date());

但结果看起来不像我期望的那样......

【问题讨论】:

你想要 ISO-8601 格式还是想要01 Jan 2014 BST 12:00 PM?两者不一样。 2014 年 1 月 1 日 BST 12:00 PM,这是我想要的。请提供一些代码示例,干杯 @seph 该示例甚至不接近任何ISO 8601 格式。没有一种格式使用月份名称,也没有使用 3 个字母的时区代码。日期时间的格式类似于YYYY-MM-DDTHH:MM:SS.SSS±HH:MM,例如2015-05-31T21:00:17+02:002015-05-31T19:00:17Z 出于好奇,为什么这个 Java 问题被标记为 C# 问题的副本?我看不出链接的问题如何帮助解决这个问题,因为答案只提供.NET 库调用。 【参考方案1】:

这个模式会给你你所需要的:

SimpleDateFormat format = new SimpleDateFormat("dd MMM yyyy zzz HH:mm a");
format.setTimeZone(TimeZone.getTimeZone("Europe/London"));
System.out.println(format.format(new Date()));

打印:

01 Sep 2014 BST 15:37 PM

注意:我假设您正在寻找 BST = 英国夏令时,应该如上所示。如果您想要孟加拉国时间,请使用 Asia/Dhaka 作为时区指示符。另请注意,英国夏令时在 1 月 1 日无效(如您的示例中所引用的)。

【讨论】:

cool thx :P 我要去试试

以上是关于一种将当前日期时间转换为 ISO 8601 格式的优雅方法 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在php中将ISO8601转换为日期格式

将 ISO 8601 日期时间字符串转换为 **Date** 对象时,如何将日期时间重新定位到当前时区?

如何配置 web api 的 json 序列化器将日期时间转换为 ISO 8601 格式?

如何在 Pandas 数据框中将日期转换为 ISO-8601 DateTime 格式

Swift:将 ISO8601 转换为日期

如何在 PHP 中将日期时间转换为 ISO 8601