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);