String-Date conversion with nanoseconds

后端 未结 4 1529
无人共我
无人共我 2020-11-30 07:50

I\'ve been struggling for a while with this piece of code for an Android app and I can\'t get the hang of it. I\'ve read and tried every solution I found on stackoverflow an

4条回答
  •  悲哀的现实
    2020-11-30 08:17

    This is what you need (but it will loose millisecond information):

    "dd.MM.yyyy HH:mm:ss.'000000'"
    

    If you used "dd.MM.yyyy HH:mm:ss.SSSSSS", then would get three leading zeros for your milliseconds.

    If you used "dd.MM.yyyy HH:mm:ss.SSS'000'", then you could format a date, but not parse any date.

    Try it out:

    public static void main(String[] args) throws ParseException {
        printDate("dd.MM.yyyy HH:mm:ss.SSS");//02.05.2010 21:45:58.073
        printDate("dd.MM.yyyy HH:mm:ss.SSSSSS");//02.05.2010 21:45:58.000073
        printDate("dd.MM.yyyy HH:mm:ss.SSS'000'");//02.05.2010 21:45:58.073000
        printDate("dd.MM.yyyy HH:mm:ss.'000000'");//02.05.2010 21:45:58.000000
    
        tryToParseDate("dd.MM.yyyy HH:mm:ss.SSS");//good
        tryToParseDate("dd.MM.yyyy HH:mm:ss.SSSSSS");//good
        tryToParseDate("dd.MM.yyyy HH:mm:ss.SSS'000'");//bad
        tryToParseDate("dd.MM.yyyy HH:mm:ss.'000000'");//good
    }
    
    private static void printDate(String formatString) {
        Date now = new Date();
        SimpleDateFormat format = new SimpleDateFormat(formatString);
        String formattedDate = format.format(now);
    
        // print that date
        System.out.println(formattedDate);
    }
    
    private static void tryToParseDate(String formatString) {
        Date now = new Date();
        SimpleDateFormat format = new SimpleDateFormat(formatString);
        String formattedDate = format.format(now);
    
        // try to parse it again
        try {
            format.parse(formattedDate);
            System.out.println("good");
        } catch (ParseException e) {
            System.out.println("bad");
        }
    }
    

提交回复
热议问题