4 回答
TA贡献1906条经验 获得超3个赞
博士
使用java.time包中的ZoneId
&ZonedDateTime
类。
ZonedDateTime.now() // Implicitly applies the JVM’s current default time zone.
最好明确指定您想要/预期的时区。
ZonedDateTime.now( ZoneId.of( "Africa/Tunis" ) )
java.time
现代方法使用java.time类,这些类在几年前取代了可怕的遗留类,例如Timestamp
、Calendar
、Date
、TimeZone
和SimpleDateFormat
。
以、或等格式指定适当的时区名称。永远不要使用 2-4 个字母的缩写,例如或因为它们不是真正的时区,不是标准化的,甚至不是唯一的(!)。Continent/Region
America/Montreal
Africa/Casablanca
Pacific/Auckland
EST
IST
ZoneId z = ZoneId.of( "America/Montreal" ) ;
通过特定地区(上述时区)的人们使用的挂钟时间捕捉当前时刻。
ZonedDateTime zdt = ZonedDateTime.now( z ) ;
TA贡献1872条经验 获得超3个赞
您可以使用此方法获取带有时区的时间戳:
public static long getTimestampWithGMT() {
long timestamp = System.currentTimeMillis() / 1000;
int offset = (TimeZone.getDefault().getRawOffset() + TimeZone.getDefault().getDSTSavings()) / 1000;
return timestamp + offset;
}
TA贡献2041条经验 获得超4个赞
您可以使用 Calendar.getInstance().getTimeInMillis()?它默认为设备时区,或者如果您想更改时区,您可以执行以下操作
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));
calendar.getTimeInMillis();
TA贡献1866条经验 获得超5个赞
您可以使用 Calendar 类来获取当前时间戳。然后您可以格式化此时间戳以显示日期、日、月、年、时间等。
Calendar c = Calendar.getInstance();
添加回答
举报