Java 将字符串转换为历元时间
我有一个字符串Java 将字符串转换为历元时间,java,Java,我有一个字符串startTimestamp,它是一个字符串,我正试图将其转换为epoch time,如下所示 Date starttimesampTime = new Date(Long.parseLong(startTimestamp)); Long epoch = starttimesampTime.getTime() / 1000; 然而,我得到了以下例外 java.lang.NumberFormatException:对于输入字符串:“2017-10-19” 16:18:03.77
startTimestamp
,它是一个字符串,我正试图将其转换为epoch time
,如下所示
Date starttimesampTime = new Date(Long.parseLong(startTimestamp));
Long epoch = starttimesampTime.getTime() / 1000;
然而,我得到了以下例外
java.lang.NumberFormatException:对于输入字符串:“2017-10-19”
16:18:03.779“
由于不能将字符串转换为长字符串,我建议将字符串转换为日期,然后再转换为历元
String str = YOUR STRING;
SimpleDateFormat df = new SimpleDateFormat("YOUR String Date PATTERN");
Date date = df.parse(str);
long epoch = date.getTime();
System.out.println(epoch);
要获取时间,您需要抛出一个
类型
,它可以容纳日/年/小时…,您需要解析您的字符串
,然后获取时间
:
- 使用
LocalDatetime,ZonedDateTime
:
- 使用
Date
但需要增强处理ParseException
两者都将打印1508422683779
是的,不清楚您为什么希望Long.parseLong
来处理“2017-10-19 16:18:03.779”。我建议您搜索如何从Java解析Date
的(大量)问题。Long
是一种数字类型。它不能包含您输入的'-'、':'
或'
。错误的模式,请稍等片刻查看他的模式string@azro抱歉忘记了这一点,哈哈从我自己的代码中举了一个简单的例子。现在就要编辑了,请您给出“UTC”版本,而不是“巴黎”版本。@samthebest只需将Europe/Paris
替换为UTC
ZonedDateTime ldate = LocalDateTime.parse(str, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"))
.atZone(ZoneId.of("Europe/Paris"));
long time = ldate.toInstant().toEpochMilli();
System.out.println(time);
String str = "2017-10-19 16:18:03.779";
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date date = df.parse(str);
long epoch = date.getTime();
System.out.println(epoch);