Java 如果时差以秒为单位,则日期格式化程序未反映正确的字符串

Java 如果时差以秒为单位,则日期格式化程序未反映正确的字符串,java,date,datetime,time,Java,Date,Datetime,Time,我有一个场景,我需要在某个时间间隔保存数据包接收时间。间隔以秒或分钟为单位。(时间间隔较小) 这是我的简单测试类,我为下一个数据包提供60秒的间隔时间 public static void main(String[] args) { Date currDate = new Date(); Date nextPointDate = new Date(currDate.getTime() + 60 * 1000); System.out.prin

我有一个场景,我需要在某个时间间隔保存数据包接收时间。间隔以秒或分钟为单位。(时间间隔较小)

这是我的简单测试类,我为下一个数据包提供60秒的间隔时间

  public static void main(String[] args) {
        Date currDate = new Date();
        Date nextPointDate = new Date(currDate.getTime() + 60 * 1000);

        System.out.println(currDate + "  " + nextPointDate);

        System.out.println(DateUtil.getFormattedDate(currDate, "yyyy-MM-dd HH:mm:ss")
        + ", " + DateUtil.getFormattedDate(nextPointDate, "yyyy-MM-dd HH:mm:ss"));
    }
这是我的Date Util方法,在这里调用:

public static String getFormattedDate(Date date, String pattern) {
    DateFormat dateFormat = new SimpleDateFormat(pattern);
    return dateFormat.format(new Date());
}
我得到的结果如下:

Tue Mar 19 14:57:50 IST 2019  Tue Mar 19 14:58:50 IST 2019
2019-03-19 14:57:50, 2019-03-19 14:57:50
输出的第一行是正确的,显示了1分钟的差异,但是 第二行输出仍然是这两个的相同字符串


这背后的原因是什么。如何实现预期的输出?

您正在
DateUtil
中创建一个新的
Date

public static String getFormattedDate(Date date, String pattern) {
    DateFormat dateFormat = new SimpleDateFormat(pattern);
    return dateFormat.format(new Date()); // change it to the date passed in!
}

您正在
DateUtil
中创建一个新的
Date

public static String getFormattedDate(Date date, String pattern) {
    DateFormat dateFormat = new SimpleDateFormat(pattern);
    return dateFormat.format(new Date()); // change it to the date passed in!
}

伙计,你的
returndateformat.format(newdate())导致问题的原因:/


正确的实现应该是
returndateformat.format(date)

伙计,你的
返回日期格式.format(newdate())导致问题的原因:/


正确的实现应该是
returndateformat.format(date)

这里的
DateUtil
是什么?(您是否可以使用
java.time
而不是
java.util.Date
API?
java.time
更干净。)抱歉@JonSkeet,我错过了这个方法。旁注:Date类已经过时了使用现代类LocalDate我建议您不要使用
SimpleDateFormat
Date
。这些类设计得很糟糕,而且早已过时,其中前者尤其令人讨厌。而是使用
ZonedDateTime
OffsetDateTime
DateTimeFormatter
,所有这些都来自。打开IDE中的警告。然后它应该警告您,
getFormattedDate
中未使用的参数中有
date
。我希望这会给你一个错误的提示。您的IDE及其警告非常有用。这里的
DateUtil
是什么?(您是否可以使用
java.time
而不是
java.util.Date
API?
java.time
更干净。)抱歉@JonSkeet,我错过了这个方法。旁注:Date类已经过时了使用现代类LocalDate我建议您不要使用
SimpleDateFormat
Date
。这些类设计得很糟糕,而且早已过时,其中前者尤其令人讨厌。而是使用
ZonedDateTime
OffsetDateTime
DateTimeFormatter
,所有这些都来自。打开IDE中的警告。然后它应该警告您,
getFormattedDate
中未使用的参数中有
date
。我希望这会给你一个错误的提示。你的IDE和它的警告非常有用。啊,我怎么能看不到这一点。谢谢@Manh.Aah,我怎么能看不到这个。谢谢@Manh。