将Java日历转换为ISO的最简单方法

时间:2018-11-05 14:11:04

标签: java date java-calendar

我有一个日历,它以以下格式返回(它是Java日历类型):cg$ind_its.trans_date := true;。 将其转换为以下日历并保留日历类型的最简单,最快捷的方法是什么:cg$scm_inventory_trans.ins(cg$rec_its,cg$ind_its,true);

在JavaScript中,我们可以使用类似l_its_id := cg$rec_its.id;

4 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:1)

日期对象没有“格式”

  

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

不,你没有。

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

  

遵循这样的日历并坚持日历类型:2018年11月5日星期一14:08:58 GMT + 0000(格林威治标准时间)?

没有这样的格式的Calendar对象,因为Calendar没有格式并且不是文本。

了解发布前搜索堆栈溢出的信息。这已经被覆盖了很多次。

java.time

可怕的Calendar类是几年前被 java.time 类采用JAR 310取代的。永远不要使用Calendar

通过OffsetDateTime类获取UTC的当前时间。

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

要生成标准ISO 8601格式的文本,请调用toString。若要将日期时间值保留为文本,请使用以下格式-这就是发明它们的原因。

要生成另一种格式的文本,请使用DateTimeFormatter类。这已经被覆盖了很多次,因此请搜索Stack Overflow。

转换

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

ZonedDateTime zdt = myGregCal.toZonedDateTime() ; 

根据需要进行投射。

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

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

答案 2 :(得分: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 + "\"");
    }
  }
}

答案 3 :(得分: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,但我是谁来告诉您该怎么做。