簡體   English   中英

使用 SimpleDateFormat 在 Java 中解析日期

[英]Date parsing in Java using SimpleDateFormat

我想將這種格式的日期解析為:“2020 年 8 月 26 日星期三 11:26:46 GMT+0200”。 但我不知道該怎么做。 我試過這個:

SimpleDateFormat parser = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss z");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date date = parser.parse(split[0]); //error line
String formattedDate = formatter.format(date);

我收到此錯誤:無法解析的日期:“2020 年 8 月 26 日星期三 11:26:46 GMT+0200”。 我的日期格式錯誤嗎? 如果可以的話,有人可以指出我正確的方向嗎?

我建議您停止使用過時且容易出錯的java.util date-time API 和SimpleDateFormat 切換到現代java.time日期時間 API 和相應的格式化 API ( java.time.format )。 Trail: Date Time 中了解有關現代日期時間 API 的更多信息。

import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        // Given date-time string
        String dateTimeStr = "Wed Aug 26 2020 11:26:46 GMT+0200";

        // Parse the given date-time string to OffsetDateTime
        OffsetDateTime odt = OffsetDateTime.parse(dateTimeStr,
                DateTimeFormatter.ofPattern("E MMM d u H:m:s zX", Locale.ENGLISH));

        // Display OffsetDateTime
        System.out.println(odt);
    }
}

輸出:

2020-08-26T11:26:46+02:00

使用舊 API:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class Main {
    public static void main(String[] args) throws ParseException {
        // Given date-time string
        String dateTimeStr = "Wed Aug 26 2020 11:26:46 GMT+0200";

        // Define the formatter
        SimpleDateFormat parser = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss 'GMT'Z", Locale.ENGLISH);

        // Parse the given date-time string to java.util.Date
        Date date = parser.parse(dateTimeStr);
        System.out.println(date);
    }
}

輸出:

Wed Aug 26 10:26:46 BST 2020

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM