在我的情况下,我有两个字符串,其中一个包含(YYYY-MM-DD)格式,另一个字符串包含(HH:MM:SS)。我需要将这些字符串中提到的日期和时间转换为PST时间戳,而无需使用TimeZone.setDefault()
方法。我的服务器时区为协调世界时。
答案 0 :(得分:0)
String dateStringUtc = "2019-11-30";
String timeStringUtc = "21:00:45";
LocalDate date = LocalDate.parse(dateStringUtc);
LocalTime time = LocalTime.parse(timeStringUtc);
ZonedDateTime pstDateTime = date.atTime(time)
.atOffset(ZoneOffset.UTC)
.atZoneSameInstant(ZoneId.of("America/Los_Angeles"));
System.out.println("Timestamp in Los Angeles time zone: " + pstDateTime);
摘要的输出是:
洛杉矶时区的时间戳: 2019-11-30T13:00:45-08:00 [美国/洛杉矶]
我正在利用您的每个字符串都是ISO 8601格式的事实。现代Java日期和时间API java.time的类将ISO 8601格式解析为默认格式,即没有任何显式格式化程序。
我假设PST是指太平洋时间(根据一年中的时间为标准时间或夏令时)。我简直不敢相信您一年四季都想要太平洋标准时间。如果您的意思是菲律宾标准时间,请使用亚洲/马尼拉。如果要使用皮特凯恩标准时间,请指定太平洋时间/皮特凯恩。