gpt4 book ai didi

java - 如何从 YAML 文件加载 DATETIME 对象?

转载 作者:搜寻专家 更新时间:2023-11-01 03:41:32 31 4
gpt4 key购买 nike

我正在使用 JODA TIME 库来持久化 DATETIME。在运行测试之前,我需要设置测试数据。所以我有一个 yaml 文件,我在其中定义了带有日期的测试数据,我希望将其转换为 DATETIME 对象,但事实并非如此。

我正在使用 Play Framework 2.0。知道如何将 YAML 日期转换为真正的 DATETIME 对象。

这是我的 yaml 文件的样子

users:
- !!models.User
createdOn: 2001-09-09T01:46:40Z
fName: Mike
lName: Roller

最佳答案

取自snakeyaml project WIKI .例如 here .

如何解析JodaTime

由于 JodaTime 不是 JavaBean(因为它没有空构造函数),因此在解析时需要一些额外的处理:

private class ConstructJodaTimestamp extends ConstructYamlTimestamp {
public Object construct(Node node) {
Date date = (Date) super.construct(node);
return new DateTime(date, DateTimeZone.UTC);
}
}

当 JodaTime 实例是 JavaBean 属性时,您可以使用以下内容:

Yaml y = new Yaml(new JodaPropertyConstructor());

class JodaPropertyConstructor extends Constructor {
public JodaPropertyConstructor() {
yamlClassConstructors.put(NodeId.scalar, new TimeStampConstruct());
}

class TimeStampConstruct extends Constructor.ConstructScalar {
@Override
public Object construct(Node nnode) {
if (nnode.getTag().equals("tag:yaml.org,2002:timestamp")) {
Construct dateConstructor = yamlConstructors.get(Tag.TIMESTAMP);
Date date = (Date) dateConstructor.construct(nnode);
return new DateTime(date, DateTimeZone.UTC);
} else {
return super.construct(nnode);
}
}

}
}

关于java - 如何从 YAML 文件加载 DATETIME 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13223250/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com