如何将日期类型定义为date,而不是String



在我的json中有一个值为"2021年5月1日00:00:00";,我需要将类型定义为Date,但它被定义为"日期";字符串"显然是因为那些名言。我如何确保类型是";日期";而不是字符串?我可以将String更改为Date,但如何在从JSON获得的列表中进行更改?

现在的示例:value 01.05.2021 00:00:00 typeMap字符串value 6 typeMap Integer

def getTypeDef(def value) {
(value instanceof BigDecimal) ? "Double" : value.getClass().simpleName
}
def list = jsonSlurper.parseText JSON
def typeMap = [:].withDefault { key -> "String" }
list.each { map ->
map.each { key, values ->
if (values != null) {
typeMap[key] = getTypeDef(values)
println('value ' + values + ' typeMap ' + typeMap[key])
//typeMap[key] = values.getClass().simpleName
}
}
}
def types = names.collect { name -> typeMap[name] } 

我可以这样做,但问题是值仍然是字符串,而不是日期,但我会在println中得到date。

def getTypeDef(def value) {
if (value ==~ /^(0?[1-9]|[12][0-9]|3[01])[\/-.](0?[1-9]|1[012])[\/-.]d{4}s[0-2]?[0-9]:[0-5][0-9]:[0-5][0-9]u0024/){
(value instanceof String) ? "Date" : value.getClass().simpleName
}
else{
(value instanceof BigDecimal) ? "Double" : value.getClass().simpleName
}
}

这里有一个方法来转换一个"2020.04.19 12:10:36";格式化为日期类型。

输入:

def date = convertStringToDate("2020.04.19 12:10:36")
def sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss")
println sdf.format(date)

输出:

2020.04.19 12:10:36

代码:

import java.text.SimpleDateFormat;
import java.util.Date;
import java.time.*;
import java.time.LocalDateTime;  
import java.time.format.DateTimeFormatter;
def convertStringToDate(String str) {
//needed format: String dateStr = "2020.04.19 12:10:36";
DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy.MM.dd HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.parse(str, pattern);
Date convertedDatetime = Date.from(dateTime.atZone(ZoneId.systemDefault()).toInstant());
assert convertedDatetime instanceof Date
return convertedDatetime
}
assert convertStringToDate("2020.04.19 12:10:36") instanceof Date
def date = convertStringToDate("2020.04.19 12:10:36")
def sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss")
println sdf.format(date)

最新更新