Как конвертировать текущую дату и время в формате 2016-02-14T15: 50: 39Z?

Я хочу преобразовать системную дату и время в формате 2016-02-14T15: 50: 39Z. Как добиться использования java?

Ответ 1

TL;DR

Instant.now()
       .toString()

2018-01-23T01: 23: 45.678901Z

Подробнее

Другие ответы используют старые устаревшие классы.

ISO 8601

Ваш желаемый формат соответствует стандарту ISO 8601.

Z на конце означает Zulu, что означает UTC.

java.time

В Java 8 и более поздних версиях используйте встроенную инфраструктуру java.time.

В классах java.time по умолчанию используются форматы ISO 8601 при разборе/генерации текстовых представлений значений даты и времени.

Instant

An Instant - это момент на временной линии в формате UTC. Метод now получает текущий момент. Что касается Java 8 Update 74, то метод now получает текущий момент с millisecond, но будущие версии могут полностью соответствовать nanosecond разрешение, которое может поместиться в Instant.

Метод Instant::toString генерирует строку так, как вы хотите, используя группы цифр (0, 3, 6 или 9) по мере необходимости для дробной секунды.

String output = Instant.now().toString();  // Example: 2016-02-14T15:50:39.123Z 

Сократить дробную секунду

Если вам не нужна доля секунды, как показано в примере с вашими примерами, обрезайте с вызовом with, передавая ChronoField.NANO_OF_SECOND enum.

String output = Instant.now().with( ChronoField.NANO_OF_SECOND , 0 ).toString();  // Example: 2016-02-14T15:50:39Z (no '.123' at end)

Еще проще, вызовите метод truncatedTo, передав ChronoUnit.SECONDS enum.

String output = Instant.now().truncatedTo( ChronoUnit.SECONDS ).toString();

Если вы хотите усечь на целую минуту, а не на целую секунду, см. этот другой вопрос.

Ответ 2

Попробуйте этот код:

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

public class Main {

    public static void main(String[] args)
    {
        Date dt=new Date();
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
        String formattedDate = formatter.format(dt);
        System.out.println(formattedDate);
    }
}

Вы можете попробовать несколько других форматов даты здесь.

Ответ 3

используйте простой формат даты ниже:

Date curDate = new Date();

    SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");

    String DateToStr = format.format(curDate);
    System.out.println(DateToStr);

    format = new SimpleDateFormat("dd-M-yyyy hh:mm:ss");
    DateToStr = format.format(curDate);
    System.out.println(DateToStr);

    format = new SimpleDateFormat("dd MMMM yyyy zzzz", Locale.ENGLISH);
    DateToStr = format.format(curDate);
    System.out.println(DateToStr);

    format = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss z");
    DateToStr = format.format(curDate);
    System.out.println(DateToStr);

    try {
        Date strToDate = format.parse(DateToStr);
        System.out.println(strToDate);
    } catch (ParseException e) {
        e.printStackTrace();
    }
}