【问题标题】:Set date into object's field [closed]将日期设置到对象的字段中[关闭]
【发布时间】:2021-01-05 04:22:26
【问题描述】:

我有一个简单的类 Message 和一些字段。其中之一是字符串日期。我要设置格式

public class Message {
  Long id;
  String text;
  String date;
} 

我的目标是在创建对象消息时设置当前日期的格式化字符串(模式为“yyyy-MM-dd'T'HH:mm:ss.SSSXXX”)。我可以通过 new 或 @Bulder Lombok 创建新对象,但如何设置字符串日期?

【问题讨论】:

标签: java


【解决方案1】:

考虑到您提供的模式,OffsetDateTime 将是我的选择:

public static void main(String[] args) {
    OffsetDateTime nowWithOffset = OffsetDateTime.now();
    System.out.println(nowWithOffset);
}

这个输出(几秒钟前)

2020-09-18T10:55:02.832+02:00

如您所见,您所需的模式与OffsetDateTime 使用的默认模式相匹配。

我会将date 属性设为OffsetDateTime 而不是String,并为String 表示提供一个简单的方法,可能是这样:

public String getDateAsString() {
    return date.format(DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss.SSSXXX");
}

如果您收到这样的String 并想设置您的属性,请使用参数化构造函数或设置器/设置方法,例如

public void setDateFromString(String date) {
    this.date = OffsetDateTime.parse(
                        date,
                        DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss.SSSXXX"));
}

最好将模式中的y 替换为u,因为y 在某些需要时代的情况下可能会导致问题。

【讨论】:

    【解决方案2】:
    class Message {
    Long id;
    String text;
    String date;
    
    public Message() {
        this.date = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS"));
        System.out.println(date);
    }
    

    }

    【讨论】:

    • 虽然这段代码可能会解决问题,但一个好的答案还应该解释代码的什么以及它如何提供帮助。
    猜你喜欢
    • 1970-01-01
    • 2016-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-27
    • 2014-02-24
    • 1970-01-01
    • 2011-10-19
    相关资源
    最近更新 更多