如何在Java中将UTC时间戳转换为本地日、小时、分钟?
然后给出时间戳1245613885,该时间戳以GMT为单位 如何使用服务器的本地时区信息在Java中将其转换为年、日、小时、分钟值 您可以使用它。它提供了一种方法(顺便说一句,这是多余的,因为默认情况下它已经选择了系统默认时区) 如果你想用一个可读的日期字符串来表示,那么我建议你这样做如何在Java中将UTC时间戳转换为本地日、小时、分钟?,java,datetime,Java,Datetime,然后给出时间戳1245613885,该时间戳以GMT为单位 如何使用服务器的本地时区信息在Java中将其转换为年、日、小时、分钟值 您可以使用它。它提供了一种方法(顺便说一句,这是多余的,因为默认情况下它已经选择了系统默认时区) 如果你想用一个可读的日期字符串来表示,那么我建议你这样做 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateString = sdf.format(calenda
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = sdf.format(calendar.getTime());
System.out.println(dateString); // 2009-06-21 15:51:25
(根据我的时区GMT-4,输出正确)
如果需要不同的时区,请更改传递到
日历
对象构造函数中的时区
值。基本上,您只需要一个格式化程序即可完成此操作
日期=新日期(1245613885L*1000)SimpleDataFormat格式化程序=新的SimpleDataFormat('MM/dd/yyyy')
System.out.println(formatter.format(日期))
我会使用像Joda Time这样的东西,它比JDK Date/Calendar类快得多,而且在日期解析方面也没有线程安全问题(不是你的问题与日期解析有关)tl;博士 jeudi 15 janvier 1970年11月19日00分13秒日本正常 java.time 现代方法使用java.time类,在采用JSR310时,这些类取代了糟糕的日期时间类 如果您的输入
1245613885
是UTC中1970年第一个时刻以来的毫秒数,则将其解析为瞬间
(UTC中的一个时刻)
使用标准ISO 8601格式生成表示该即时
对象值的字符串
String output = instant.toString() ;
从UTC调整到特定地区(时区)的人们使用的挂钟时间
以大陆/地区
的格式指定,例如美国/蒙特利尔
,非洲/卡萨布兰卡
,或太平洋/奥克兰
。切勿使用2-4个字母的缩写,如EST
或IST
,因为它们不是真正的时区,也不是标准化的,甚至不是唯一的(!)
如果要使用JVM的当前默认时区,请请求它并将其作为参数传递。如果省略,代码将变得模棱两可,我们无法确定您是否打算使用默认值,或者您是否像许多程序员一样不知道这个问题
ZoneId z = ZoneId.systemDefault() ; // Get JVM’s current default time zone.
将ZoneId
应用于Instant
以获取zoneDateTime
ZonedDateTime zdt = instant.atZone( z ) ; // Same moment as the `instant`, but different wall-clock time.
使用标准ISO 8601格式生成一个字符串,该字符串表示ZoneDateTime
对象的值,该格式扩展为将分区名称附加在方括号中
String output = zdt.toString() ;
对于其他格式,可以指定自己的自定义格式模式,也可以让java.time自动本地化。对于任一路线,请使用
DateTimeFormatter
。搜索堆栈溢出,因为这已被处理多次。UTC时间戳表示为从历元开始的秒数。java.util.Calendar使用从历元开始的毫秒数,因此在设置日历上的时间时需要乘以1000。您可以使用@昵称
以某人的评论为目标,这样他/她将收到有关全局收件箱中的评论和最近活动的通知。请注意,当你自己是提问者或回答者时,这是不必要的:)另请参见meta.+1,如果只是为了表达对99.99%的人类的声援,他们希望现有的JDK日历内容能够火热地死去--茉莉花:
Instant instant = Instant.ofEpochMilli( 1_245_613_885L ) ;
String output = instant.toString() ;
ZoneId z = ZoneId.of( "America/Montreal" ) ;
ZoneId z = ZoneId.systemDefault() ; // Get JVM’s current default time zone.
ZonedDateTime zdt = instant.atZone( z ) ; // Same moment as the `instant`, but different wall-clock time.
String output = zdt.toString() ;