Groovy:处理不同的日期格式和转换

时间:2016-06-24 13:53:26

标签: date groovy

我是Groovy的新手。我的数据库中有以下日期:

1:00 AM

10:00 PM

1:00AM(与上述相同,没有空格)

1:00:00

13:00

13:00:00

我希望将它们扫描并转换为相同的格式。在Groovy中有什么简单的方法我可以选择。 (它们作为字符串存储在db中)。 假设我希望所有日期都是AM | PM格式。

我能够使用正则表达式匹配来区分格式,但仍然混淆了如何转换它们。

任何帮助将不胜感激。

2 个答案:

答案 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