Самый простой способ конвертировать Java Calendar в ISO

У меня есть календарь, который возвращается в следующем формате (это в типе календаря Java): 2020-02-15T00:00:00, Какой самый простой и краткий способ преобразовать его в следующий календарь, как этот, и сохранить тип календаря: Mon Nov 05 2018 14:08:58 GMT+0000 (Greenwich Mean Time)?

В JavaScript мы можем использовать что-то вроде var date = new Date();

4 ответа

Вот пример использования строки, преобразованной в ваш пример формата с использованием API даты, представленного в Java 8:

import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

class Scratch {
    public static void main(String[] args) {

        String input = "2020-02-15T00:00:00";

        LocalDateTime parsedTime = LocalDateTime.parse(input);

        ZonedDateTime zonedDateTime = ZonedDateTime.of(parsedTime, ZoneId.of("GMT"));

        String output = DateTimeFormatter.ofPattern("EEE MMM dd yyyy HH:mm:ss Z '('z')'")
                .format(zonedDateTime);

        System.out.print(output);
    }
}

Объекты даты и времени не имеют "формата"

У меня есть календарь, который возвращается в следующем формате (это тип Java Calendar): 2020-02-15T00:00:00.

Нет, ты не

Calendar Объект не имеет формата. Только текст, представляющий значение даты и времени, имеет формат.

следующий календарь, как этот, и сохраните тип календаря: пн 05 ноя 201 14:08:58 GMT+0000 (среднее время по Гринвичу)?

Там нет такого понятия, как Calendar объект с этим форматом, как Calendar не имеет формата и не является текстом.

Научитесь искать переполнение стека перед публикацией. Это уже освещалось много раз.

java.time

Ужасный Calendar класс был вытеснен несколько лет назад классом java.time с принятием JAR 310. Никогда не используйте Calendar,

Получить текущее время в UTC с помощью OffsetDateTime учебный класс.

OffsetDateTime odt = OffsetDateTime.now( ZoneOffset.UTC ) ;

Чтобы сгенерировать текст в стандартном формате ISO 8601, позвоните toString, Чтобы сохранить значение даты и времени в виде текста, используйте эти форматы - вот почему они были изобретены.

Чтобы создать текст в другом формате, используйте DateTimeFormatter учебный класс. Это было рассмотрено много раз, поэтому ищите переполнение стека.

Перерабатывать

Если дано GregorianCalendar объект, немедленно преобразуйте в ZonedDateTime объект путем вызова новых методов, добавленных к старым классам.

ZonedDateTime zdt = myGregCal.toZonedDateTime() ; 

В ролях, если это будет необходимо.

ZonedDateTime zdt = ( (GregorianCalendar) myCal ).toZonedDateTime() ; 

Тогда используйте DateTimeFormatter генерировать текст в нужном вам формате.

Предполагая, что у вас есть экземпляр Календаря Календаря, вы должны быть в состоянии сделать это:

SimpleDateFormat dateFormat = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss Z");
String result = dateFormat.format(cal.getTime());

getTime дает вам дату для SimpleDateFormat.

Это самый простой способ справиться с объектом календаря. Также наиболее подвержен ошибкам. Я согласен со всеми комментариями о том, что вы должны использовать java.time, но кто я такой, чтобы говорить вам, что делать.

Вы можете использовать SimpleDateFormat

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

public class HelloWorld
{
  public static void main(String[] args)
  {
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
    String dateString = "2020-02-15T00:00:00";
    try {
        Date parsed = format.parse(dateString);
        System.out.print(parsed.toString());
        }
        catch(ParseException pe) {
            System.out.println("ERROR: Cannot parse \"" + dateString + "\"");
    }
  }
}
Другие вопросы по тегам