java - 将当前日期时间转换为 ISO 8601 格式的优雅方法

标签 java timezone simpledateformat iso8601 dataformat

我需要将当前日期时间转换为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());

但结果看起来不像我期望得到的......

最佳答案

此模式将为您提供所需的内容:

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

打印:

英国夏令时 2014 年 9 月 1 日下午 15:37

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

关于java - 将当前日期时间转换为 ISO 8601 格式的优雅方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25607733/

相关文章:

java - Spring boot Thymeleaf 上下文参数未传递给模板

java - 是否有一个 Java 库可以将 Olsen 时区 id 转换为 Windows 时区 id

python - Facebook 事件和时区,如何将 UTC 日期时间转换为 facebook 期望的时间?

java - 日期时区转换

Java SimpleDateFormat 不接受##/##

java - Android 将字符串转换为日期

java - Lee算法的问题(Java)

java - 我部署的 servlet 在哪里? (点云,java)

java - 在 Intellij 中创建 TestNG xml

Microsoft 时区的 java.time.zone.ZoneRulesProvider