如何从时间组件中提取日期

时间:2016-02-04 10:09:14

标签: java date simpledateformat

我必须从自时间值开始以java-dd-yyyy格式提取日期。由于时间是创建doucment的时间。例如,如果时间 1452413972759 ,则日期为“ Sun,2016年1月10日08:19:32 GMT ”(根据http://www.epochconverter.com/计算)。从这个,我可以得到所需格式的日期,但我无法编码第一步,即自上次更改以来。有人能帮助我吗?

我试过

DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
        java.util.Date date = df.parse("1452320105343");
        String DATE_FORMAT = "MM/dd/yyyy";
        SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
        System.out.println("Today is " + sdf.format(date));

但它提供了解析异常。

1 个答案:

答案 0 :(得分:0)

您的代码无法正常工作,因为您尝试解析数毫秒,就像它是MM/dd/yyyy格式的日期一样。

我希望以下代码能够正常工作,其中S代表毫秒:

DateFormat df = new SimpleDateFormat("S");
java.util.Date date = df.parse("1452413972759");
String DATE_FORMAT = "MM/dd/yyyy";
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
System.out.println("Today is " + sdf.format(date));

然而,由于某些原因,它显示的是1970年的日期。

相反,以下解析秒而不是毫秒的代码可以满足您的需求:

DateFormat df = new SimpleDateFormat("s");
java.util.Date date = df.parse("1452413972");  // just remove the last 3 digits, or divide by 1000
String DATE_FORMAT = "MM/dd/yyyy";
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
System.out.println("Today is " + sdf.format(date));

或者只是按照@mohammedkhan中的链接使用Date构造函数而不是解析字符串:

java.util.Date date = new Date(1452413972759l);
String DATE_FORMAT = "MM/dd/yyyy";
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
System.out.println("Today is " + sdf.format(date));