Я хочу преобразовать системную дату и время в формате 2016-02-14T15: 50: 39Z. Как добиться использования java?
Как конвертировать текущую дату и время в формате 2016-02-14T15: 50: 39Z?
Ответ 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();
}
}