Java 如果时差以秒为单位,则日期格式化程序未反映正确的字符串
我有一个场景,我需要在某个时间间隔保存数据包接收时间。间隔以秒或分钟为单位。(时间间隔较小) 这是我的简单测试类,我为下一个数据包提供60秒的间隔时间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
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。