我必须从自时间值开始以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));
但它提供了解析异常。
答案 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));