Java时间戳格式转换



我在字符串属性中具有时间戳格式。当我格式时,它会在几分钟内添加一些额外的分钟。让任何人面对。请在这里帮助我

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

您可以看到当地的日期时间不会更改分钟 - 它可以保持毫秒。

相关内容

  • 没有找到相关文章

最新更新