![](/img/trans.png)
[英]NumberFormatException while parsing date with SimpleDateFormat.parse()
[英]simpledateformat parse not parsing date properly
我正在嘗試將日期打印為:2013/11/20 08 30,但是在通過simpledateformat解析日期之后,它的打印方式如下:IST 2013年11月20日14:00:00星期三,這里我通過HH和MM作為08 30,但是解析后更改為14:00:00
你能建議一下嗎
public class PrintDate {
public static void main(String[] args) {
System.out.println(getDate("2013/11/20","08","30"));
}
public static Date getDate(String date, String hour, String miniute) {
final SimpleDateFormat displayDateTimeFormat = new SimpleDateFormat("yyyy/MM/dd HH mm");
displayDateTimeFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
String paddedHour = hour.length() == 2 ? hour : "0" + hour;
int min = Integer.valueOf(miniute);
int remainder = min % 5;
int roundMinute = remainder > 2 ? min - remainder + 5 : min - remainder;
String minuteStr = String.valueOf(roundMinute);
String paddedMinuteStr = minuteStr.length() == 2 ? minuteStr : "0" + minuteStr;
String startDateStr = date + " " + paddedHour.toUpperCase() + " " + paddedMinuteStr;
Date startDate = null;
try {
startDate = displayDateTimeFormat.parse(startDateStr);
} catch (ParseException e) {
}
return startDate;
}
}
通過simpledateformat於2013年11月20日星期三14:00:00 IST解析日期后,在這里我通過了HH和MM作為08 30,但在解析后將其更改為14:00:00
是的,因為您指定要將其解析為UTC值。 但是,“ Date
本身沒有時區的概念-只是時間的瞬間。 Date.toString()
將始終使用默認時區。
2013-11-20 08:30 UTC與IST 2013-11-20 14:00的時間相同,因此它實際上是在正確解析它-這只是Date.toString()
的結果,這使您感到困惑。
如果您還想保留時區,則必須單獨進行操作-或(最好)使用Joda Time ,它是一種更好的日期/時間API,並具有DateTime
類,該類表示時間中的即時時間。特定的日歷系統和時區。
只需嘗試以下代碼行即可獲取所需格式的日期-
Date date=new Date(2013-1900,10,20,8,30);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyy/MM/dd K mm");
String strFormatDate = dateFormat.format(date);
Date dtFormatDate = dateFormat.parse(strFormatDate);
System.out.println("Formatted date in String:"+strFormatDate);
System.out.println("Formatted Date:"+dtFormatDate);
只需以K代替日期格式的HH即可。 您可以將日期設置為14 30,然后此格式也可以根據需要轉換日期。
謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.