通过SimpleDateFormat解析系统时间时出错

Pro*_*Rev 1 java date string-formatting systemtime simpledateformat

我想得到当前系统时间,然后通过格式化程序解析它SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");.

.... error : java.text.ParseException: Unparseable date: "Tue Jan 13 17:05:51 PST 2015"在下面的方法中使用:

public static void currentSystemTime() {
    Calendar calendar = new GregorianCalendar();
    try {
        System.out.println(format.parse(calendar.getTime().toString()));
    } catch (ParseException ex) {
        Logger.getLogger(DateDifference.class.getName()).log(Level.SEVERE, null, ex);
    }
}
Run Code Online (Sandbox Code Playgroud)

如何以匹配的文字格式获取系统时间SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");

icz*_*cza 5

您希望将当前时间(a Date)格式化为StringDateFormat.parse(String)相反.

使用DateFormat.format(Date)你想要达到的目标:

SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
System.out.println(sdf.format(new Date()));
Run Code Online (Sandbox Code Playgroud)

注意:

构造函数new Date()分配一个Date对象并初始化它,以便它表示分配它的时间,测量到最接近的毫秒.所以不需要用来Calendar获得当前时间.

替代方案:

format()方法有多个重载SimpleDateFormat,其中一个采用一般Object参数:

Format.format(Object)

这也接受格式化日期/时间作为Long自1970年1月1日00:00:00 GMT以来的毫秒数.所以以下也可以在不创建Date实例的情况下工作:

SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
System.out.println(sdf.format(System.currentTimeMillis()));
Run Code Online (Sandbox Code Playgroud)