簡體   English   中英

使java.text.DateFormat解析為java.util.Calendar

[英]Make java.text.DateFormat parse to java.util.Calendar

通常,我這樣做是這樣的:

DateFormat f = new SimpleDateFormat("yyyy-MM-dd");
Date d = f.parse("2012-12-21");
Calendar c = Calendar.getInstance();
c.setTime(d);
bean.setDate(c);

但是我剛剛找到了可行的解決方案:

DateFormat f = new SimpleDateFormat("yyyy-MM-dd");
f.parse("2012-12-21");
bean.setDate(f.getCalendar());

為什么在doc中沒有地方指定parse() (例如)在解析后記住值,而不是簡單地返回它? 這是一個不好的方法嗎? 這些年來,我覺得自己被背叛了。

日歷是可變的,如果您使用相同的SimpeDateFormat實例解析新日期,則bean的日期/日歷可能會更改

我認為這很糟糕。 DateFormat具有Calendar實例,該實例用於在解析期間設置日期。 例如,如果要為另一個語言環境設置實例,則可以使用setCalendar方法設置此實例。 在解析日期之后,該實例僅停留在先前狀態,即處於當前實現中,將來在parse方法返回后可能會清除此值,因此我將不再依賴此實現。 實際上使用了getCalendar() ,因此您可以查看正在使用的Callendar當前“種類”,語言環境等,但不能獲取當前值。

我認為您不需要從Calendar創建實例並直接使用dateFormat:

DateFormat f = new SimpleDateFormat("yyyy-MM-dd");
f.format(f.parse("2012-12-21"));
bean.setDate(f.getCalendar());

暫無
暫無

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

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