使用SimpleDateFormat解析日期以获取时间

时间:2016-01-14 10:06:03

标签: android datetime simpledateformat datetime-format

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

以下是代码:

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:Unparseable date:" Fri Jan 15 09:30:00 GMT + 04:00 2016" (在偏移0处)

4 个答案:

答案 0 :(得分:0)

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

您的格式已关闭,请尝试此操作。

答案 1 :(得分: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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

我猜你的初始日期格式是错误的。你能分享selectedDateTime的价值吗? 我想它的格式不同(根据你的评论),比如Fri Jan 15 09:30: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();
}