OiR*_*iRc 8 java seconds simpledateformat long-integer
我制作了这个片段来显示我的问题:
import java.text.SimpleDateFormat;
public class Foo {
public static void main(String[] args) {
SimpleDateFormat formatter = new SimpleDateFormat("mm hh dd MM yyyy");
String date1 = "1412293500";
String date2 = "1412336700";
String dateString1 = formatter.format(Long.parseLong(date1 + "000"));
String dateString2 = formatter.format(Long.parseLong(date2 + "000"));
System.out.println(dateString1 + " " + dateString2);
}
}
Run Code Online (Sandbox Code Playgroud)
date1并date2以秒表示,所以我期望输出中有两个不同的日期,但日期打印相同.我查看了这个在线工具,你可以看到日期与两个不同的日子有关.
我怎么解决这个问题?
两个时间戳之间的差异恰好是12个小时.
将h在标识SimpleDateFormat格式AM/PM(1-12)的时间,所以你其实并不输出真正的区别是:日期从上午转移到PM.
尝试使用k或H标识符将日期中的小时格式化为(1-24)或(0-23).
SimpleDateFormat formatter = new SimpleDateFormat("mm kk dd MM yyyy");
String date1 = "1412293500";
String date2 = "1412336700";
String dateString1 = formatter.format(Long.parseLong(date1 + "000"));
String dateString2 = formatter.format(Long.parseLong(date2 + "000"));
System.out.println(dateString1 + " " + dateString2); // prints 45 01 03 10 2014 45 13 03 10 2014
Run Code Online (Sandbox Code Playgroud)
您还可以输出带有a标识符的AM/PM标记,如下所示:
SimpleDateFormat formatter = new SimpleDateFormat("mm hh dd MM yyyy aa");
String date1 = "1412293500";
String date2 = "1412336700";
String dateString1 = formatter.format(Long.parseLong(date1 + "000"));
String dateString2 = formatter.format(Long.parseLong(date2 + "000"));
System.out.println(dateString1 + " " + dateString2); // prints 45 01 03 10 2014 AM 45 01 03 10 2014 PM
Run Code Online (Sandbox Code Playgroud)