簡體   English   中英

將字符串轉換為日期 BRT

[英]Convert String To Date BRT

我正在嘗試將字符串轉換為日期,但我還沒有得到它。

我的字符串采用以下格式:

"Fri Jun 13 10:24:01 BRT 2014"

我已經谷歌搜索並找到了這個解決方案,但仍然繼續捕獲異常。

這是我的代碼:

java.text.SimpleDateFormat df = new java.text.SimpleDateFormat("EEE MMM dd HH:mm:ss 'BRT' yyyy", Locale.getDefault());
df.setTimeZone(TimeZone.getTimeZone("BRT"));
try {
    return df.parse(dateString);
} catch (Exception e) {
    return null;
}

你需要:

SimpleDateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
df.setTimeZone(TimeZone.getTimeZone("BRT"));
DateFormat utcFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
Date d = df.parse("Fri Jun 13 10:24:01 BRT 2014");
System.out.println(utcFormat.format(d)); // output: 2014-06-13T12:24:01+0200

考慮以下更正:

  1. Locale.ENGLISH而不是Locale.getDefault()可以可靠地解析“Jun”或“Fri”等英文名稱

  2. 使用模式符號 z而不是文字“BRT”,因為否則解析器無法將字符串“BRT”解釋為解釋為巴西標准時間的時區名稱的縮寫(在您的情況下只是解析為文字,因此不考慮時區UTC-03:00 的偏移量)。

Meno Hochschild回答是正確的。 注意那些(1)和(2)項。

喬達時間

僅供參考,推薦使用Joda-Time或 java.time( Java 8 中的新包),而不是臭名昭著的 java.util.Date 和 .Calendar 類。

Joda-Time 2.3 中的示例。

String input = "Fri Jun 13 10:24:01 BRT 2014";

通過 Locale 對象,指定在解析過程中用來解釋星期幾和月份名稱的語言。

DateTimeFormatter formatter = DateTimeFormat.forPattern( "EEE MMM dd HH:mm:ss z yyyy" ).withLocale( Locale.ENGLISH );

不依賴於默認值,而是指定一個時區以分配給解析產生的新 DateTime 對象。 與 java.util.Date 對象不同,DateTime 真正知道自己分配的時區。

DateTimeZone timeZone = DateTimeZone.forID( "America/Sao_Paulo" ); // Arbitrary choice of example time zone.
DateTime dateTime = formatter.withZone( timeZone ).parseDateTime( input );

通常您應該在世界時 (UTC) 工作 易於轉換。

DateTime dateTimeUtc = dateTime.withZone( DateTimeZone.UTC );

內置格式化程序基於ISO 8601格式。

String output = dateTime.toString();

或者定義您自己的模式,或使用其他預定義格式之一。

String outputInAwkwardFormat = formatter.print( dateTime );

暫無
暫無

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

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