簡體   English   中英

Java中的日期轉換錯誤

[英]Date Conversion error in Java

我正在嘗試將類型“ Mon Jan 14 00:00:00 GMT-12:00 2013”​​的日期轉換為java.sql.Date yyyy / MM / dd類型,我編寫了以下代碼。 在嘗試執行以下代碼時,出現“無法解析的日期”錯誤。請幫助我解決以下問題。

        DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
     try{
               java.sql.Date xdate=new java.sql.Date(df.parse("Mon Jan 14 00:00:00 GMT-12:00 2013").getTime());
System.out.println(xdate.toString());

            }catch(Exception x)
            {
                System.out.println(x.getMessage());
            }

與其他答案一樣,您正在使用錯誤的模式來解析已獲取的日期字符串。

實際上,您將需要該模式,但要將Date對象轉換為所需的模式。 但是首先,您需要獲取給定日期字符串的Date對象。 為此,您需要構建與您的字符串完全匹配的模式。

日期格式有兩個方面:-

  • 解析 -日期字符串到日期對象
  • 格式化 -將Date對象格式化為Date字符串

因此,您首先需要使用具有不同模式的DateFormat#parse() ,然后使用DateFormat#format()

因此,這是您需要的代碼:-

String fromDate = "Mon Jan 14 00:00:00 GMT-12:00 2013";
Date date = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy").parse(fromDate);

java.sql.Date toDate = new java.sql.Date(date.getTime());

System.out.println(new SimpleDateFormat("yyyy/MM/dd").format(toDate));

您正在使用

new SimpleDateFormat("yyyy/MM/dd")

因此yyyy/MM/dd嘗試以Mon Jan 14 00:00:00 GMT-12:00 2013格式解析日期時,將要解析的日期字符串轉換為yyyy/MM/dd格式,它將被解析。

嗯,您提供的日期不是您提供的格式。 您有一個ISO字符串作為參數,但是格式化程序需要“ yyyy / MM / dd”。 您為什么期望這行得通?

您需要以下簡單日期格式

DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");

更多日期和時間模式: 簡單的日期格式

嘗試

DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyyy", Locale.US);

如果您的母語不是英語,並且您要解析MonJan則需要Locale.US。 日期解析器可能對語言敏感,例如在我們的例子中

暫無
暫無

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

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