我想在考虑Android中Java中的timeStamp
的情况下获得TimeZone
,
我尝试了很多方法,但仍然找不到解决方法。
答案 0 :(得分:1)
使用在 java.time 包中找到的ZoneId
和ZonedDateTime
类。
ZonedDateTime.now() // Implicitly applies the JVM’s current default time zone.
最好明确指定所需/期望的时区。
ZonedDateTime.now(
ZoneId.of( "Africa/Tunis" )
)
现代方法使用了几年前的 java.time 类,这些类取代了可怕的旧类,例如Timestamp
,Calendar
,Date
,{{1 }}和TimeZone
。
以SimpleDateFormat
的格式指定proper time zone name,例如Continent/Region
,America/Montreal
或Africa/Casablanca
。切勿使用2-4个字母的缩写,例如Pacific/Auckland
或EST
,因为它们不是真正的时区,不是标准化的,甚至不是唯一的(!)。
IST
捕获当前时刻,该时刻是通过特定区域的人们使用的挂钟时间(上面提到的时区)看到的。
ZoneId z = ZoneId.of( "America/Montreal" ) ;
java.time框架已内置在Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和SimpleDateFormat
。
要了解更多信息,请参见Oracle Tutorial。并在Stack Overflow中搜索许多示例和说明。规格为JSR 310。
目前位于Joda-Time的maintenance mode项目建议迁移到java.time类。
您可以直接与数据库交换 java.time 对象。使用符合JDBC driver或更高版本的JDBC 4.2。不需要字符串,不需要ZonedDateTime zdt = ZonedDateTime.now( z ) ;
类。
在哪里获取java.time类?
答案 1 :(得分:0)
您可以使用以下方法获取带有时区的时间戳:
public static long getTimestampWithGMT() {
long timestamp = System.currentTimeMillis() / 1000;
int offset = (TimeZone.getDefault().getRawOffset() + TimeZone.getDefault().getDSTSavings()) / 1000;
return timestamp + offset;
}
答案 2 :(得分:-1)
您可以使用Calendar类获取当前时间戳。然后,您可以格式化此时间戳以显示日期,日,月,年,时间等。
Calendar c = Calendar.getInstance();
答案 3 :(得分:-1)
您可以使用Calendar.getInstance()。getTimeInMillis()吗?它默认为设备时区,或者如果您想更改timeZone,则可以执行以下操作
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));
calendar.getTimeInMillis();