簡體   English   中英

如何將當前字符串格式化為日期/時間格式?

[英]How to format current string into a date/time format?

我正在嘗試將此字符串轉換為日期/時間格式
我從數據庫中獲取此字符串,只想將其轉換為正確的日期和時間...
String str = 2019-02-22T13:43:00Z;//輸入
我通過此代碼從此字符串中獲取正確的日期:

 String[] split_date = date_time.split("T",2);
 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
 Date   date1  = format.parse ( split_date[0]);
 date_time = new SimpleDateFormat("dd-MMM-yyyy hh:mm", Locale.ENGLISH).format(date1);  

在上面的代碼中(date_time = 22-Feb-2019 12:00)即將到來。
預期輸出為:2019 年 2 月 22 日 13:43
這里的問題是我無法從默認格式中獲得正確的時間。

現代方法使用java.time類。

Instant instant = Instant.parse( "2019-02-22T13:43:00Z" ) ;
OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC ) ;

DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd-MMM-uuuu HH:mm" ) ;
String output = odt.format( f ) ;

輸出 :

22-Feb-2019 13:43

關於java.time

java.time框架內置於 Java 8 及更高版本中。 這些類取代麻煩的老傳統日期時間類,如java.util.DateCalendar ,和SimpleDateFormat

要了解更多信息,請參閱Oracle 教程 並在 Stack Overflow 上搜索許多示例和解釋。 規范是JSR 310

現在處於維護模式Joda-Time項目建議遷移到java.time類。

您可以直接與您的數據庫交換java.time對象。 使用符合JDBC 4.2或更高版本的JDBC 驅動程序 不需要字符串,不需要java.sql.*類。

從哪里獲得 java.time 類?

ThreeTen-Extra項目用額外的類擴展了 java.time。 該項目是未來可能添加到 java.time 的試驗場。 您可以在這里找到一些有用的類,比如IntervalYearWeekYearQuarter ,和更多

試試下面的代碼:

String dt = "2019-02-22T13:43:00Z";
SimpleDateFormat mainformat = new SimpleDateFormat("yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'", Locale.getDefault());
mainformat.setTimeZone(TimeZone.getTimeZone("UTC"));

try {
    Date date1 = mainformat.parse(dt);
    String date_time = new SimpleDateFormat("dd-MMM-yyyy HH:mm", Locale.ENGLISH).format(date1);
    Log.e("Date Time", date_time); 
} catch (Exception e) {
    e.printStackTrace();
}

輸出: 2019 年 2 月 22 日 13:43

暫無
暫無

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

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