如何將日期字符串轉換為 UTC 日期對象?

維杰

我正在學習 Java 並遇到了這個問題。我有一個給定格式的日期字符串。

String dbTime = "01/01/1998 12:30:00";
final String DATE_FORMAT = "MM/dd/yyyy HH:mm:ss";

現在我想初始化/創建一個UTC時區的 Date 對象為此,我嘗試了以下代碼

    SimpleDateFormat sdfAmerica = new SimpleDateFormat(DATE_FORMAT);
    TimeZone utcTimeZone = TimeZone.getTimeZone("UTC");
    sdfAmerica.setTimeZone(utcTimeZone);

    String sDateInAmerica = sdfAmerica.format(date); // Convert to String first
    Date dateInAmerica = new Date();
    try {
        dateInAmerica = formatter.parse(sDateInAmerica); // Create a new Date object
    } catch (ParseException e) {
        e.printStackTrace();
    }

這會將時間轉換為 UTC 而不是僅僅創建一個日期對象。

01/02/1998 23:00:00

現在我對轉換時間的正確方法感到困惑。我有字符串格式的時間,我必須將其轉換為不同的格式,主要是 UTC 到 PST 或 PST 到 UTC。

經過一番研究,我找到了教程,但無法獲得預期的輸出。

羅蘭·克魯澤

java.util.Date 類不是最適合開始的。雖然它從外面看起來像是一個完整的日期,但它實際上只代表一個時間戳,而沒有存儲實際的時區信息。

在 Java 8 及更高版本上,我建議堅持使用設計更好的 java.time.* 類。

    String dbTime = "01/01/1998 12:30:00";
    String DATE_FORMAT = "MM/dd/yyyy HH:mm:ss";

    // parsed date time without timezone information
    LocalDateTime localDateTime = LocalDateTime.parse(dbTime, DateTimeFormatter.ofPattern(DATE_FORMAT));

    // local date time at your system's default time zone
    ZonedDateTime systemZoneDateTime = localDateTime.atZone(ZoneId.systemDefault());

    // value converted to other timezone while keeping the point in time
    ZonedDateTime utcDateTime = systemZoneDateTime.withZoneSameInstant(ZoneId.of("UTC"));

    // timestamp of the original value represented in UTC
    Instant utcTimestamp = systemZoneDateTime.toInstant();


    System.out.println(utcDateTime);
    System.out.println(utcTimestamp);

僅從名稱中就可以看出,對於不同的日期用例有不同的類。

例如 java.time.LocalDateTime 僅表示沒有特定時區上下文的日期和時間,因此可用於直接解析您的字符串值。

要轉換時區,您首先必須轉換為一個 ZonedDateTime,它接受日期、時間和時區。我已經在“systemDefault”上初始化了示例,因為在大多數較小的應用程序中,您可以使用 JVM 和操作系統的默認值來假設當前時區。如果您想確保將該值解釋為太平洋時間,您也可以直接使用 ZoneId.of("America/Los_Angeles") 。

該值可以轉換為另一個時區的另一個 ZonedDateTime,例如 UTC。

對於 UTC,您還可以使用 Instant 類,它僅表示 UTC 時間戳,也可以用作大多數其他類型的基礎

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 DatePicker 中顯示我將字符串轉換為日期時間的日期

如何在python中將日期轉換為字符串?

如何在返回日期對象的 Java 中將日期格式轉換為 dd-MM-yyyy

如何將對象的日期類型轉換為另一種?

如何將日期時間對象漂亮地保存為日期而不是字符串

如何將類似日期時間的字符串轉換為毫秒

Kotlin/java - 如何將日期時間字符串轉換為 Instant?

如何在 SQL 查詢中將 unix epoch 格式日期轉換為 UTC?

如何將numpy模塊的ndarray對象轉換為python中的字符串

Azure 數據工廠:如何將 UTC 日期時間轉換為 unix 時間戳

無法將特定日期時間字符串轉換為日期

在 spark scala 中將日期從字符串轉換為日期時間

在powershell中將日期字符串轉換為日期時間

在 SQL 中將字符串轉換為日期

Python如何將帶有特殊字符的字符串轉換為日期時間

在pyspark SQL中將字符串日期轉換為日期格式

如何將數字日期轉換為字符串

如何將'20211114025320+0000'轉換為JS日期對象

VBA 將日期轉換為字符串

Apache Spark 如何將日期時間從澳大利亞/墨爾本時間轉換為 UTC?

如何將字符串類型的日期轉換為另一種日期格式。| 顫振| 鏢

如何將字符串轉換為日期並使用mysql進行計算

如何將 RAW 字符串轉換為 PHP 中的對象?

如何在日期時間將對象轉換為周數

將日期字符串轉換為日期格式然後做減法

Springboot中如何將輸入字符串轉換為json字符串或json對象

將字符串中的時間和日期轉換為日期 VB.net

如何將字符串格式化為默認日期時間對象

如何將 UTC 日期時間字符串轉換為 Dart 中的本地日期時間?