我是Groovy的新手。我的数据库中有以下日期:
1:00 AM
10:00 PM
1:00AM
(与上述相同,没有空格)
1:00:00
13:00
13:00:00
我希望将它们扫描并转换为相同的格式。在Groovy中有什么简单的方法我可以选择。 (它们作为字符串存储在db中)。
假设我希望所有日期都是AM | PM
格式。
我能够使用正则表达式匹配来区分格式,但仍然混淆了如何转换它们。
任何帮助将不胜感激。
答案 0 :(得分:1)
如果您使用的是Java 8,则可以使用包含每个用例的可选模式构建DateTimeFormatter
:
def times = [
'1:00 AM',
'10:00 PM',
'1:00AM',
'1:00:00',
'13:00',
'13:00:00'
]
import java.time.LocalTime
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.parseLenient()
.appendPattern("[h:mm a][h:mm a][h:mma][H:mm:ss][H:mm][h:mm:SSa][hh:mm:SS a]")
.toFormatter();
times.each {
println LocalTime.parse(it, formatter)
}
答案 1 :(得分:0)
在编写了为您输出不同格式的方法之后,让我们将其称为module.exports.paths = {
"tmp" : "assets/dist",
"public" : "assets/dist"
};
,您可以使用Groovy中的formatmethod()
方法和简单的if语句来修改字符串,还要注意问题总是在字符串的末尾,我不认为Groovy中有任何内置的方法会自动为你重新格式化时间。
subtring()
示例:强>
1:00 AM -> format1
10:00 PM -> format2
1:00AM -> format3
1:00:00 -> format4
13:00 -> format5
13:00:00 -> format6