我在字符串属性中有一个Timestamp格式。当我格式化它是添加一些额外的分钟,我可以看到偏差在几分钟。 有任何人面对。请在这里帮助我
String dddddd="2017-11-29 09:24:03.857921";
SimpleDateFormat fullMonthFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS");
SimpleDateFormat fullMonthFormat2 = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss.SSSSSS");
Date strd11;
strd11=fullMonthFormat1.parse(dddddd);
System.out.println("chec date"+strd11);
String aa=fullMonthFormat2.format(strd11);
System.out.println("aa date"+aa);
o/p
chec dateWed Nov 29 09:38:20 IST 2017
aa date29-Nov-2017 09:38:20.000921
答案 0 :(得分:3)
我认为问题是你的毫秒,857921毫秒等于~14分钟(14,2986833),这似乎是添加到输出的时间(输出正确,输入字符串或模式需要修复,如果你不想要这种行为)
答案 1 :(得分:2)
TestingTest已经回答了你的问题。然而,如果你想要一个不会重新计算分钟的不同行为,你可以使用java.time.LocalDateTime
(你需要Java 8)。这个课程不会像SimpleDateformat
那样搞乱分钟。
请参阅下面的代码段中的差异:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
public class TimeChecks {
public static void main(String[] args) throws ParseException {
String dddddd = "2017-11-29 09:24:03.857921";
SimpleDateFormat fullMonthFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS");
SimpleDateFormat fullMonthFormat2 = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss.SSSSSS");
Date strd11;
strd11 = fullMonthFormat1.parse(dddddd);
System.out.println("chec date" + strd11);
String aa = fullMonthFormat2.format(strd11);
System.out.println("aa date" + aa);
LocalDateTime localDate = LocalDateTime.parse(dddddd, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSS"));
System.out.printf("Local date: %s%n", localDate);
}
}
打印出来:
chec dateWed Nov 29 09:38:20 GMT 2017
aa date29-Nov-2017 09:38:20.000921
Local date: 2017-11-29T09:24:03.857921
正如您所看到的,本地日期时间不会改变分钟数 - 它会保持毫秒数。