2017-08-04 27 views
-6

我有點困惑。我有一個方法應該將給定的字符串轉換爲Date類型。出於某種原因,我可以在屏幕上打印日期,但是當我嘗試從方法中檢索日期時,解析器返回null。SimpleDateFormat返回null,但可以在屏幕上打印日期

被用作參數的示例串:星期四08月10日七時23分00秒EEST 2017年

public Date convertStringToDate(String sDate) { 
    SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy", Locale.getDefault()); 
    try { 
     Date date = format.parse(sDate); 
     System.out.println(date); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
    return date; 
} 
+0

你有兩個'日期'變量... – assylias

+0

@assylias嗯,不,他只有一個。另一個稱爲'sDate',因爲OP說他得到'null'而不是'return date;'的編譯錯誤,所以他沒有提供真正代表他的問題的代碼。 -1。 – Tom

+0

更正... *她。並沒有編譯器錯誤給我。當我打印出日期時,我需要確切的日期類型和值。問題是,當我從不同的方法調用此方法並將其分配給Date值時,我得到空值。 – neziy

回答

1

您正在申報在你的身體try名爲date第二個變量。刪除Date部分(這使其成爲本地)。更改

Date date = format.parse(sDate); 

date = format.parse(sDate); 
+0

第一個日期變量在哪裏? –

+0

我在這個方法之外有一個日期變量。 – neziy

0

(發佈代表OP的。)

我宣佈日期變量的方法之外,要解決這個問題,我不得不宣佈某處一個本地的。下面是更新的工作代碼:

public Date convertStringToDate(String sDate) { 
    Date date; 
    SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy", Locale.getDefault()); 
    try { 
     date = format.parse(sDate); 
     System.out.println(date); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
    return date; 
}