如何在JDK1.7上将GMT datetime SQL数据类型转换为JAVA EST时间戳
GMT SQL server中的日期时间数据类型: 列名=PostedDateTime 数值=2019-09-30 17:46:04.600 我试图使用JAVA代码将datetime值转换为EST时间戳 因此,输出应为: 2019-09-30 13:46:04 有什么想法如何转换这个,请包括需要导入的软件包 到目前为止,我有:如何在JDK1.7上将GMT datetime SQL数据类型转换为JAVA EST时间戳,java,date-formatting,jdk1.7,Java,Date Formatting,Jdk1.7,GMT SQL server中的日期时间数据类型: 列名=PostedDateTime 数值=2019-09-30 17:46:04.600 我试图使用JAVA代码将datetime值转换为EST时间戳 因此,输出应为: 2019-09-30 13:46:04 有什么想法如何转换这个,请包括需要导入的软件包 到目前为止,我有: SimpleDateFormat dr = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS"); SimpleDateFo
SimpleDateFormat dr = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
SimpleDateFormat dr1 = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss");
String dateString = obj.getStringProperty("S_DISCUSSION_POSTEDDATETIME");
Date date = dr.parse(dateString);
strRetBuffer.append(obj.getStringProperty("S_DISCUSSION_AUTHOR") + ": " + dr1.format(date) + ": " + obj.getStringProperty("S_DISCUSSION_TOPICNAME")+": " +obj.getStringProperty("S_DISCUSSION_BODY") + "\n\r" );
首先,使用
DateTimeFormatter
String date = "2019-09-30 17:46:04.600";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
DateTimeFormatter outputFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime local = LocalDateTime.parse(date, formatter);
然后使用时区GMT
将LocalDateTime
转换为ZonedDateTime
,即UTC+0
ZonedDateTime zone = ZonedDateTime.of(local, ZoneId.of("UTC"));
最后,使用US/Eastern
和输出格式将ZonedDateTime
转换为LocalDateTime
String output = zone.withZoneSameInstant(ZoneId.of("US/Eastern")).toLocalDateTime().format(outputFormat);
嗨,埃里克。请分享您的代码,您是如何实现您的目标?我已经共享代码,我不知道如何转换它。EST。可能的副本考虑扔掉长期过时和臭名昭著的麻烦<代码> SimpleDateFormat <代码>和朋友,并添加到您的项目中,以便使用<代码> java。现代Java日期和时间API。使用它更好。您是否可以在JavaJDK1.7上完成它。您提供的代码仅在JDK1.8上工作,以获取java.time.*类。是的,您可以在JDK1.7上执行此操作,因为java.time(Java1.8中引入的现代java日期和时间API)已经进行了后端口。获取并将其添加到您的项目中,使用子包从
org.threeten.bp
导入,并享受与旧的、设计拙劣的datetime类相比,使用它有多好。非常小的一点,US/Eastern
不受欢迎。改用美国/纽约
。它给出了相同的结果。或者美国/多伦多
如果加拿大想要东部时间。现代时区ID格式为地区/城市。
String x = "2019-09-30 17:46:04.600";
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = formatter.parse(x);
System.out.println(date);
System.out.println(formatter.format(date));
outputFormat.setTimeZone(TimeZone.getTimeZone("America/New_York"));
System.out.println(outputFormat.format(date));