从java中的SimpleDateFormat中检索两个相等的日期

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)

date1date2以秒表示,所以我期望输出中有两个不同的日期,但日期打印相同.我查看了这个在线工具,你可以看到日期与两个不同的日子有关.

我怎么解决这个问题?

Tun*_*aki 8

两个时间戳之间的差异恰好是12个小时.

h在标识SimpleDateFormat格式AM/PM(1-12)的时间,所以你其实并不输出真正的区别是:日期从上午转移到PM.

尝试使用kH标识符将日期中的小时格式化为(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)