[英]Android get UTC milliseconds from GMT milliseconds
我在 GMT 中有時間變量,我將在 UTC 中進行轉換。 我發布我的代碼..
long mytime = 1376824500000;
Date date = new Date(mytime);
String time = new SimpleDateFormat("HH:mm").format(date);
這在某些設備中返回"13:15"
,但我希望始終使用 utc date: "11:15"
。 我怎樣才能做到這一點? 謝謝你。
不清楚您期望 UTC 和 GMT 之間有什么區別 - 就我們在這里討論的目的而言,它們是等效的。 (它們在技術上並不完全相同,但是......)
在格式化方面,您只需要在格式化程序上設置時區:
// TODO: Consider setting a locale explicitly
SimpleDateFormat format = new SimpleDateFormat("HH:mm");
format.setTimeZone(TimeZone.getTimeZone("UTC"));
String time = format.format(date);
試試這個:
long mytime = 1376824500000;
Date date = new Date(mytime);
SimpleDateFormat formater = = new SimpleDateFormat("HH:mm");
formater .setTimeZone(TimeZone.getTimeZone("GMT"));
String time formater.format(date);
java.util
Date-Time API 及其格式化 API SimpleDateFormat
已過時且容易出錯。 建議完全停止使用它們並切換到現代 Date-Time API * 。
使用現代日期時間 API java.time
解決方案:
import java.time.Instant;
import java.time.LocalTime;
import java.time.OffsetDateTime;
import java.time.OffsetTime;
import java.time.ZoneOffset;
public class Main {
public static void main(String[] args) {
Instant instant = Instant.ofEpochMilli(1_376_824_500_000L);
OffsetDateTime odtUtc = instant.atOffset(ZoneOffset.UTC);
LocalTime time = odtUtc.toLocalTime();
System.out.println(time);
// If you want the time with timezone offset
OffsetTime ot = odtUtc.toOffsetTime();
System.out.println(ot);
}
}
輸出:
11:15
11:15Z
輸出中的Z
是零時區偏移的時區指示符。 它代表祖魯語並指定Etc/UTC
時區(時區偏移為+00:00
小時)。
從Trail: Date Time 中了解有關現代日期時間 API 的更多信息。
* 出於任何原因,如果您必須堅持使用 Java 6 或 Java 7,您可以使用ThreeTen-Backport,它將大部分java.time功能向后移植到 Java 6 和 7。如果您正在為 Android 項目和您的 Android API 工作級別仍然不符合 Java-8,請檢查 通過 desugaring和How to use ThreeTenABP in Android Project 可用的 Java 8+ APIs 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.