如何使用 Talend 将毫秒转换为时间戳

How to convert milliseconds into Timestamp using Talend

我有 csv 文件,其中 time_column 以毫秒为单位,我想要在时间戳(日期和时间)中使用。我有 100 多行需要转换。

Input :

1587740000000
1590600000000 
1588880000000
1589040000000
1589040000000

Output:
24-04-2020 20:23:20
27-05-2020 22:50:00
08-05-2020 01:03:20
09-05-2020 21:30:00
09-05-2020 21:30:00

我不确定,但这可能有帮助

Converting a Unix timestamp to a readable date- Talend

使用Java:-

//As string
String date = new java.text.SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(new java.util.Date(epoch*1000));
//Epoch in seconds, remove '*1000' for milliseconds.

//As Date
java.util.Date date= new java.util.Date(epoch*1000);
//Epoch in seconds, remove '*1000' for milliseconds.

您可以使用 tJava 或 tJavaflex 以简单的方式完成。 下面是代码,

long Milliseconds = 1587740000000L;
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
System.out.println(sdf.format(new Date(Milliseconds)));

您还可以从中创建例程并将其用作 tMap 中的函数

如果您对 Java 中的解决方案满意,请选择 java.time,现代 Java 日期和时间 API。其他几个答案中建议的 SimpleDateFormat class 是臭名昭著的 class 麻烦制造者,请与它保持一定距离。

    DateTimeFormatter millisecondFormatter = new DateTimeFormatterBuilder()
            .appendValue(ChronoField.INSTANT_SECONDS)
            .appendValue(ChronoField.MILLI_OF_SECOND, 3)
            .toFormatter();
    
    String[] timeStringsFromCsv = {
            "1587740000000",
            "1590600000000",
            "1588880000000",
            "1589040000000",
            "1589040000000"
    };
    
    for (String timeString : timeStringsFromCsv) {
        ZonedDateTime dateTime = millisecondFormatter
                .parse(timeString, Instant::from)
                .atZone(ZoneId.systemDefault());
        System.out.println(dateTime);
    }

输出:

2020-04-24T20:23:20+05:30[Asia/Colombo]
2020-05-27T22:50+05:30[Asia/Colombo]
2020-05-08T01:03:20+05:30[Asia/Colombo]
2020-05-09T21:30+05:30[Asia/Colombo]
2020-05-09T21:30+05:30[Asia/Colombo]

如您所见,当我 运行 代码时,我将 JVM 的默认时区设置为 Asia/Colombo。如果您的时区不同,您的结果也会不同。

如果您需要将输出格式化为新字符串,请使用第二个 DateTimeFormatter

Link: Oracle tutorial: Date Time 解释如何使用 java.time.