有Avro int date formate像
"name":"BirthDate","type":["null","int"],"default":null,"logicalType":"date"}
date逻辑类型注解Avro int,其中int存储从unix纪元1970年1月1日(ISO日历)开始的天数。
example: "BirthDate": -8364 or "BirthDate": 2320
如何使用Apache Camel或Groovy脚本转换或计算日期。
7uzetpgm1#
所以如果你只想计算日期,你只需要从纪元算起的毫秒数,你可以把它传递给Java中的任意数量的日期表示。如果你想让Avro把它作为一个日期,这是一个有点棘手的问题,这是一个非常Avro文档的问题。(我不是一个Maven)。但是,这里是如何创建几个不同的类型。我建议像这样为它添加一个getter:
class MyObject { int daysSinceEpoch ... long getMillisSinceEpoch() { TimeUnit.MILLISECONS.convert( daysSinceEpoch, TimeUnit.DAYS ) } Date getDate() { new Date( millisSinceEpoch ) LocalDate getLocalDate() { Instant.ofEpochMilli(millisSinceEpoch) .atZone(ZoneId.systemDefault()).toLocalDate() } Calendar getCalendar() { Calendar cal = Calendar.getInstance() cal.setTimeInMillis( millisSinceEpoch ) return cal } }
然后选择你想要的数据类型。
1条答案
按热度按时间7uzetpgm1#
所以如果你只想计算日期,你只需要从纪元算起的毫秒数,你可以把它传递给Java中的任意数量的日期表示。如果你想让Avro把它作为一个日期,这是一个有点棘手的问题,这是一个非常Avro文档的问题。(我不是一个Maven)。但是,这里是如何创建几个不同的类型。我建议像这样为它添加一个getter:
然后选择你想要的数据类型。