簡體   English   中英

從java中的SimpleDateFormat中檢索兩個相等的日期

[英]Retrieve two equal dates from SimpleDateFormat in java

我制作了這個片段來顯示我的問題:

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);

    }
}

date1date2以秒為單位表示,所以我期望輸出中有兩個不同的日期,但日期打印相同。 我查看了這個在線工具 ,你可以看到日期與兩個不同的日子有關。

我怎么解決這個問題?

兩個時間戳之間的差異恰好是12個小時。

SimpleDateFormath標識符以AM / PM(1-12)格式化小時,因此您實際上不輸出實際差異:日期從AM轉移到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

你也可以輸出的AM / PM標記與a標識符是這樣的:

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

這是因為您的日期是12小時appart,您使用小寫'h'進行小時格式化。 日期分別是凌晨1點和1點。 為了在輸出中看到這個,請使用大寫“H”或將“a”添加到“am / pm”標記的格式中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM