2016-12-09 49 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”