如何使用SimpleDateFormat输出UTC格式的日期时间?
如何输出带"UTC"后缀的UTC时间格式
需求说明
需要输出格式如下的UTC时间:
2023-01-11 09:25:52 UTC
使用yyyy-MM-dd HH:mm:ss Z格式会得到带偏移量的结果(如2023-01-11 09:29:25 +0100),直接用yyyy-MM-dd HH:mm:ss 'UTC'会强制给所有时区的时间加上UTC后缀,导致错误。
解决方案
1. Java 8及以上(推荐使用新时间API)
使用java.time包的类,先确保时间为UTC时区,再指定格式输出:
import java.time.Instant; import java.time.format.DateTimeFormatter; public class UTCFormatDemo { public static void main(String[] args) { // 获取当前UTC时间 Instant utcNow = Instant.now(); // 定义格式,绑定UTC时区并指定后缀 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss 'UTC'") .withZone(java.time.ZoneOffset.UTC); String formattedTime = formatter.format(utcNow); System.out.println(formattedTime); } }
执行后将输出标准的yyyy-MM-dd HH:mm:ss UTC格式,且仅输出UTC时间。
2. Java 8之前(兼容SimpleDateFormat)
需要先将SimpleDateFormat的时区设置为UTC,再使用固定后缀:
import java.text.SimpleDateFormat; import java.util.Date; import java.util.TimeZone; public class OldUTCFormatDemo { public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss 'UTC'"); // 强制设置时区为UTC sdf.setTimeZone(TimeZone.getTimeZone("UTC")); String formattedTime = sdf.format(new Date()); System.out.println(formattedTime); } }
关键是必须先设置时区为UTC,避免本地时区的时间错误带上UTC后缀。
内容的提问来源于stack exchange,提问作者Ricardo Machado
相关产品推荐
相关产品推荐

