-2

我有一个以以下格式返回的日历(它是 Java 日历类型)2020-02-15T00:00:00:. 将其转换为像这样的以下日历并保持日历类型的最简单、最短的方法是什么:Mon Nov 05 2018 14:08:58 GMT+0000 (Greenwich Mean Time)

在 JavaScript 中,我们可以使用类似的东西var date = new Date();

4

4 回答 4

1

这是一个使用 Java 8 中引入的 Date API 将字符串转换为示例格式的示例:

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);
    }
}
于 2018-11-05T15:00:51.547 回答
1

日期时间对象没有“格式”</h1>

我有一个以以下格式返回的日历(它是 Java 日历类型):2020-02-15T00:00:00。

不,你没有。

对象没有Calendar格式。只有表示日期时间值的文本才有格式。

遵循这样的日历并坚持日历类型:Mon Nov 05 2018 14:08:58 GMT+0000(格林威治标准时间)?

Calendar不存在具有该格式的对象之类的东西,因为 aCalendar没有格式并且不是文本。

在发布之前学习搜索 Stack Overflow。这已经讲过很多次了。

java.time

几年前,随着 JAR 310 的采用,这个可怕的Calendar类被java.timeCalendar类所取代。永远不要使用.

使用类获取当前 UTC 时间OffsetDateTime

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

要生成标准 ISO 8601 格式的文本,请调用toString. 要将日期时间值保存为文本,请使用这些格式——这就是它们被发明的原因。

要生成另一种格式的文本,请使用DateTimeFormatter该类。这已经讲过很多次了,所以搜索 Stack Overflow。

兑换

如果给定一个对象,通过调用添加到旧遗留类的新方法GregorianCalendar立即转换为对象。ZonedDateTime

ZonedDateTime zdt = myGregCal.toZonedDateTime() ; 

必要时投。

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

然后用于DateTimeFormatter生成所需格式的文本。

于 2018-11-05T15:29:14.787 回答
0

假设你有一个 Calendar cal 的实例,你应该能够做到这一点:

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

getTime 为您提供 SimpleDateFormat 的日期。

这是处理 Calendar 对象的最简单方法。也是最容易出错的一种。我同意所有关于你应该使用 java.time 的评论,但我是谁来告诉你该怎么做。

于 2018-11-05T14:59:03.147 回答
0

您可以使用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 + "\"");
    }
  }
}
于 2018-11-05T14:32:23.457 回答