我做了这个片段来展示我的问题:
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);
}
}
date1
和 date2
以秒为单位表示,因此我期望输出中有两个不同的日期,但打印的日期相同。我在网上查了这个tool , 如您所见,日期与两个不同的日子相关。
我该如何解决这个问题?
最佳答案
您的两个时间戳之间的差异恰好是 12 小时。
SimpleDateFormat
中的h
标识符格式化 AM/PM (1-12) 中的小时数,因此您实际上并没有输出真正的差异:日期从 AM 转移到 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
您还可以输出带有 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
关于java - 在java中从SimpleDateFormat中检索两个相等的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32439510/