2016-12-09 70 views
0

我有這種格式日期(字符串):上午4點CST 16年12月9日無法解析的日期例外 - 月日期格式

我想使用此代碼解析它:

String sDate = "4 AM CST 9 DEC 16"; 
Date st = new SimpleDateFormat("h aaa z d MMM yy",Locale.ENGLISH).parse(sDate); 
DateFormat formatter = DateFormat.getDateTimeInstance(
          DateFormat.LONG, 
          DateFormat.FULL, 
          new Locale("no")); 
        sDate = formatter.format(st); 

但我是具有這種異常,而不是:

java.text.ParseException:無法解析的日期:「凌晨4點CST 16年12月9日」

我真的不知道,但它是因爲在我SDATE月,所有字符都大寫的值和dateformat「MMM」唯一的大寫字母是每個月的第一個字母?

+0

無法重現(JDK 1.8.0_77)你的代碼工作正常 – Vitaly

+0

JDK 1.6.0_45和1.7.0_80作品也沒關係 – amicoderozer

+1

你在Android?也許某些文本資源與平臺上的輸入有所不同......您可能會嘗試通過打印「DateFormatSymbols.xyz(...)」查找幕後的內容。 –

回答

1

此代碼:

import java.text.DateFormat; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.util.Locale; 

public class Main { 
    public static void main(String[] args) throws ParseException { 
    String sDate = "4 AM CST 9 DEC 16"; 
    Date st = new SimpleDateFormat("h aaa z d MMM yy", Locale.ENGLISH).parse(sDate); 
    DateFormat formatter = DateFormat.getDateTimeInstance(
     DateFormat.LONG, 
     DateFormat.FULL, 
     new Locale("no")); 
    sDate = formatter.format(st); 
    System.out.print(sDate); 
    } 
} 

工作正常。 我有Java版本「1.8.0_77」