如何使用 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.
我有 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.