Java 将任何时区中的日期和时间转换为UTC时区
这是我的日期“2014年5月15日00:00:00”Java 将任何时区中的日期和时间转换为UTC时区,java,date,timezone,simpledateformat,Java,Date,Timezone,Simpledateformat,这是我的日期“2014年5月15日00:00:00” 如何将IST转换为UTC,即(至2014年5月14日18:30:00) 基于从时区到UTC时区 我的代码是 DateFormat formatter = new SimpleDateFormat("dd MMM yyyy HH:mm:ss"); formatter.setTimeZone(TimeZone.getTimeZone("IST")); //here set timezone System.out.println(forma
DateFormat formatter = new SimpleDateFormat("dd MMM yyyy HH:mm:ss");
formatter.setTimeZone(TimeZone.getTimeZone("IST")); //here set timezone
System.out.println(formatter.format(date));
formatter.setTimeZone(TimeZone.getTimeZone("UTC")); //static UTC timezone
System.out.println(formatter.format(date));
String str = formatter.format(date);
Date date1 = formatter.parse(str);
System.out.println(date1.toString());
- 如果用户从任何区域输入相同的日期,则将获得UTC时间(例如:从澳大利亚输入,然后是2014年5月15日00:00:00至2014年5月14日16:00:00)
- 请提出任何建议
java.util.date
没有任何内部时区状态,仅根据规范以用户无法更改的方式引用UTC(仅计算UTC时区中UNIX历元后的毫秒,留出闰秒)
但是您可以将java.util.Date
的格式化字符串表示形式转换为另一个时区。我更喜欢使用两个不同的格式化程序,每个时区(和模式)一个。在您的案例中,我也更喜欢使用“亚洲/加尔各答”,因为这样它将普遍有效(IST也可以是“以色列标准时间”,在以色列将有不同的解释):
tl;博士
java.time
正确,但显示的类现在已过时
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd-MM-uuuu HH:mm:ss" ) ;
LocalDateTime ldt = LocalDateTime.parse( "15-05-2014 00:00:00" , f ) ;
ldt.toString():2014-05-15T00:00
显然,你们肯定字符串代表了印度时间的一个时刻。提示:您应该在该字符串中包含分区或偏移。更好的是,使用标准ISO 8601格式
指定印度时区
ZoneId z = ZoneId.of( "Asia/Kolkata" ) ;
ZonedDateTime zdt = ldt.atZone( z ) ;
zdt.toString():2014-05-15T00:00+05:30[亚洲/加尔各答]
要通过UTC的挂钟时间查看时间线上的同一时刻、同一点,请提取一个瞬间
Instant instant = zdt.toInstant() ;
instant.toString():2014-05-14T18:30:00Z
关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,& 该项目现已启动,建议迁移到类 要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是 使用符合或更高版本的,您可以直接与数据库交换java.time对象。不需要字符串或java.sql.*类 从哪里获得java.time类
- ,及以后
- 内置的李>
- 标准JavaAPI的一部分,带有捆绑实现
- Java9添加了一些次要功能和修复
- 及
- 大部分java.time功能都在中向后移植到Java6和Java7
-
- 更高版本的Android捆绑包实现了java.time类
- 对于早期的Android,该项目采用了ThreeTen Backport(如上所述)。看
该项目使用其他类扩展了java.time。这个项目是java.time将来可能添加的一个试验场。您可以在这里找到一些有用的类,例如、、和。当您打印时,无论是IST还是EST,它都将始终位于本地时区。因此,您的作业是否仅与打印相关,或者您希望进一步使用该值由于重播,不同的时区用户从日期和日期输入,我希望转换该日期值并用于进一步计算。我没有打印该值。可能重复FYI,非常麻烦的旧日期时间类,例如,和
java.text.simpleDataFormat
现在被内置在Java8和更高版本中的类所取代。看见
ZoneId z = ZoneId.of( "Asia/Kolkata" ) ;
ZonedDateTime zdt = ldt.atZone( z ) ;
Instant instant = zdt.toInstant() ;