2016-01-14 28 views
0

我正在开发一个Android应用程序,在该应用程序中我需要解析日期以获得时间。当我使用我的下面的代码时,我正在解析异常。使用SimpleDateFormat解析日期以获取时间

下面是代码:

SimpleDateFormat parseFormat = new SimpleDateFormat("dd MM hh:mm:ss yyyy"); 
    SimpleDateFormat printFormat = new SimpleDateFormat("h:mm:ss"); 
    Date date; 
    try { //selectedDateTime = Fri Jan 15 09:30:44 GMT+04:00 2016 
     date = parseFormat.parse(selectedDateTime+""); 
     System.out.println(printFormat.format(date)); 
    } catch (ParseException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

这里是个例外:

java.text.ParseException:无法解析的日期:“周五1月15日09:30:00 GMT + 04:00 2016" (偏移量为0)

+2

什么是准确的分析例外您'接收? –

+2

你到底在做什么? – OBX

+0

java.text.ParseException:Unparseable date:“Fri Jan 15 09:30:00 GMT + 04:00 2016”(at offset 0)@LudwigS这是我得到的异常。 –

回答

0
SimpleDateFormat parserSDF=new SimpleDateFormat("EEE MMM d HH:mm:ss zzz yyyy"); 

你格式化掉,试试这个。

0

更新

try { 
     String dateTest = "Fri Jan 15 09:30:00 GMT+04:00 2016"; 

     SimpleDateFormat formatter = new SimpleDateFormat(
       "EEE MMM dd hh:mm:ss zzz yyyy"); 
     java.util.Date d = (java.util.Date) formatter.parse(dateTest); 
     System.out.println("" + d); 

     SimpleDateFormat print = new SimpleDateFormat("hh:mm:ss"); 
     System.out.println(print.format(d)); 

    } catch (ParseException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

输出

Fri Jan 15 11:00:00 IST 2016 
11:00:00 

下面的代码可以帮助您了解究竟是如何格式化的日期格式

Calendar calendar = Calendar.getInstance(); 


    System.out.println("Date: \t"+calendar.getTimeInMillis()); 

    String dateAsText_ = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(Long.parseLong(""+calendar.getTimeInMillis()))); 
    Date date = new Date(Long.parseLong(""+calendar.getTimeInMillis())); 
    System.out.println(""+dateAsText_); 

    SimpleDateFormat ft = new SimpleDateFormat ("dd-MMM-yyyy"); 
    System.out.println(""+ft.format(date)); 

    SimpleDateFormat time_ft = new SimpleDateFormat ("hh:mm aa"); 
    System.out.println(""+time_ft.format(date)); 

输出

语法变化
Date: 1452766759531 
2016-01-14 15:49:19 
14-Jan-2016 
03:49 PM 

enter image description here

0

你的字符串是错误的。正确的是:

SimpleDateFormat parseFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy"); 
SimpleDateFormat printFormat = new SimpleDateFormat("HH:mm:ss"); 
0

我想你的初始日期格式是错误的。你能分享selectedDateTime的价值吗? 我猜它在不同的格式(按您的评论),如周五1月15日9时三十分44秒GMT + 04:00 2016

如果是这样,请尝试此代码

SimpleDateFormat parseFormat = new SimpleDateFormat("E MM dd hh:mm:ss z yyyy"); 
SimpleDateFormat printFormat = new SimpleDateFormat("h:mm:ss"); 
Date date; 
try { //selectedDateTime = Fri Jan 15 09:30:44 GMT+04:00 2016 
    date = parseFormat.parse(selectedDateTime+""); 
    System.out.println(printFormat.format(date)); 
} catch (ParseException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
}