Какой формат даты у 2019-06-17T20: 27: 23.706000000Z?

Какой формат даты у 2019-06-17T20:27:23.706000000Z? Мне нужен формат даты этого формата дат, также нужно проанализировать и преобразовать его в java Date.

Я пробовал с этим:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");

Но это дает мне неверные результаты.


person Chinmay    schedule 23.06.2019    source источник
comment
Я рекомендую вам не использовать SimpleDateFormat. Этот класс заведомо проблематичен и давно устарел. Ваш формат - ISO 8601. Используйте Instant или OffsetDateTime, оба из java.time, современной даты Java. и API времени. Каждый из них будет анализировать вашу строку без какого-либо явного средства форматирования.   -  person Ole V.V.    schedule 24.06.2019
comment
Привет, спасибо за информацию. Да, я использую мгновенный класс, который намного лучше, чем унаследованные классы даты и времени   -  person Chinmay    schedule 25.06.2019


Ответы (1)


Попробуй это:

import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.DateFormat;
import java.util.TimeZone;

public class Main
{
    public static void main(String[] args){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
        try{
            Date date = sdf.parse("2019-06-17T20:27:23.706Z");
            System.out.println(date);
        }
        catch(Exception pe){
            System.out.println(pe);
        }

    }
}

вывод:

Mon Jun 17 20:27:23 UTC 2019

Кстати, вы также можете попробовать это:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS'Z'");

Оба дают одинаковый результат

Попробуйте использовать Instant из пакета java.time (java 8).

String value = "2019-06-17T20:27:23.706000000Z";
Instant instant = Instant.parse(value);
Date date = Date.from(instant);
person Anubhav Singh    schedule 23.06.2019
comment
Спасибо, Анубав, если мы используем 2019-06-17T20: 27: 23.706000000Z, это даст мне результат как среда, 26 июня 00:34:03 PDT 2019, что неверно .. так что он может поддерживать только 3 цифры в миллисекундах? есть ли способ обрабатывать более 3 цифр? - person Chinmay; 23.06.2019
comment
Да, потому что миллисекунды (SSS) могут состоять только из трех цифр. - person Anubhav Singh; 23.06.2019
comment
проверьте это: docs.oracle.com/javase/7 / docs / api / java / text / - person Anubhav Singh; 23.06.2019
comment
Кажется, что выводятся странные / неправильные результаты, когда мы добавляем больше значений после 3 цифр - person Anubhav Singh; 23.06.2019
comment
Таким образом, вы должны использовать только 3 цифры. После этого значение начнет меняться. - person Anubhav Singh; 23.06.2019
comment
один быстрый вопрос, ссылку вы отправите docs.oracle. com / javase / 7 / docs / api / java / text /. Я прошел через это, но я не увидел ничего упомянутого, например, для миллисекунд принимаются только 3 цифры. Я что-то упускаю? - person Chinmay; 23.06.2019
comment
Просмотрите этот ТАК ответ и комментарии, я думаю, вы найдете ответ. stackoverflow.com/questions/47926442/ - person Anubhav Singh; 23.06.2019
comment
Пожалуйста, не учите молодых пользоваться давно устаревшим и заведомо неприятным SimpleDateFormat классом. По крайней мере, не как первый вариант. И не без оговорок. Сегодня у нас намного лучше java.time, современный API даты и времени Java, и его DateTimeFormatter. - person Ole V.V.; 24.06.2019
comment
Да, конечно. Я уже включил решение из пакета java.time. - person Anubhav Singh; 24.06.2019