Java中无法解析的日期错误

时间:2015-04-25 09:31:36

标签: java date

我想将系统日期转换为yyyy-MM-dd格式。 SO中也有类似的问题。我发现我需要以输入格式解析日期,然后转换为输出格式。但我自己陷入了第一阶段。我无法解析系统日期(Sat Apr 25 14:44:15 IST 2015)。

这是我的MWE:

import java.util.*;
import java.text.*;

public class Test
{
    public static void main(String[] args)
    {
        try
        {
            Date date = new Date();                          
            SimpleDateFormat dateFormat = new SimpleDateFormat("EEE MM dd HH:mm:ss aaa YYYY");          
            date = dateFormat.parse(date.toString());
            System.out.println(date);
        }
        catch(Exception e)
        {
            System.out.println(e.getMessage());
        }
    }
}

我得到例外:

  

无法解释的日期:"星期六4月25日14:53:33 IST 2015"

3 个答案:

答案 0 :(得分:1)

Date对象可以转换为任何日期格式的字符串。 字符串可以转换为日期,但它只能以标准日期格式出现,但不能在你想要的那个中出现..

如果您想将系统日期格式化为 yyyy-MM-dd 格式,请使用:

Date date = new Date();
SimpleDateFormat dateFormater = new SimpleDateFormat("yyyy-MM-dd");          

String date1 = dateFormater.format(date);

正如您在评论中指定的那样,您希望用当前日期减去sql日期,然后将sql日期转换为正常日期格式。
像这样:

String date = your date;
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");     
Date date1 = dateFormat.parse(date);

Date currentdate = new Date();

然后使用日历对象:

Calendar calendar = Calendar.getInstance();
calendar.setTime(date1);

Calendar calendar2 = calendar.getInstance();
calendar2.setTime(currentdate);

long difference = (calendar2.getTimeInMillis() - calendar
    .getTimeInMillis()) / 60000;

这将为您提供两分钟之间的差异。

答案 1 :(得分:0)

这对你有用

public class Test1 {
public static void main(String[] args) {
    try
    {
        Date date = new Date();                          
        System.out.println(date);
        String dateFormat = new SimpleDateFormat("EEE MM dd HH:mm:ss aaa YYYY").format(date);          
        System.out.println(dateFormat);
    }
    catch(Exception e)
    {
        System.out.println(e.getMessage());
    }
}
        }

输出

Sat Apr 25 15:10:38 IST 2015
Sat 04 25 15:10:38 PM 2015

答案 2 :(得分:0)

我认为你应该这样做。

using

但是你应该理解“日期”和“日期格式”之间的区别。