我在字符串属性中具有时间戳格式。当我格式时,它会在几分钟内添加一些额外的分钟。让任何人面对。请在这里帮助我
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
我认为问题是您的毫秒,857921毫秒等于〜14分钟(14,2986833),这似乎是添加到输出中的时间(输出是正确的,如果您不想要此行为,则输入字符串或图案需要修复)
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
您可以看到当地的日期时间不会更改分钟 - 它可以保持毫秒。