比较java中表示时间戳的UTC的两种不同字符串格式
我有一个字符串“21-SEP-15 02.48.48.000000000 AM UTC”,表示UTC时间戳,我有一个格式字符串“2015-10-08T20:13:21.3Z”,表示另一个时间戳。如果它们相等或不相等,如何比较它们?第二种格式使用ISO约定,因此可以轻松解析 第一个解析起来有点复杂,特别是因为月份是大写的 一种方法是:比较java中表示时间戳的UTC的两种不同字符串格式,java,datetime,Java,Datetime,我有一个字符串“21-SEP-15 02.48.48.000000000 AM UTC”,表示UTC时间戳,我有一个格式字符串“2015-10-08T20:13:21.3Z”,表示另一个时间戳。如果它们相等或不相等,如何比较它们?第二种格式使用ISO约定,因此可以轻松解析 第一个解析起来有点复杂,特别是因为月份是大写的 一种方法是: String ts1 = "21-SEP-15 02.48.48.000000000 AM UTC"; String ts2 = "2015-10-08T20:13
String ts1 = "21-SEP-15 02.48.48.000000000 AM UTC";
String ts2 = "2015-10-08T20:13:21.3Z";
DateTimeFormatter fmt1 = new DateTimeFormatterBuilder()
.parseCaseInsensitive()
.appendPattern("dd-MMM-yy hh.mm.ss.SSSSSSSSS a VV")
.toFormatter(Locale.ENGLISH);
Instant d1 = ZonedDateTime.parse(ts1, fmt1).toInstant();
Instant d2 = Instant.parse(ts2);
然后,您可以使用
d1比较这两个瞬间。equals(d2)
第二种格式使用ISO约定,因此可以轻松解析
第一个解析起来有点复杂,特别是因为月份是大写的
一种方法是:
String ts1 = "21-SEP-15 02.48.48.000000000 AM UTC";
String ts2 = "2015-10-08T20:13:21.3Z";
DateTimeFormatter fmt1 = new DateTimeFormatterBuilder()
.parseCaseInsensitive()
.appendPattern("dd-MMM-yy hh.mm.ss.SSSSSSSSS a VV")
.toFormatter(Locale.ENGLISH);
Instant d1 = ZonedDateTime.parse(ts1, fmt1).toInstant();
Instant d2 = Instant.parse(ts2);
然后可以将这两个实例与
d1进行比较。equals(d2)
1)将字符串
解析为LocalDateTime
。2) 正如Boris所说,你不能直接将它们作为字符串进行比较,从而得到你想要的时间顺序。您需要首先将字符串
转换为临时对象。Java8中的Java日期时间API非常适合这种情况。一旦将字符串作为时态对象,例如LocalDateTime
实例,就可以使用isEqual()
或compareTo()
对它们进行比较。由于这些时间已经是UTC时间,您还可以直接比较从Instant.toEpochMilli()
获取的POSIX时间整数值,以进行时间顺序。@Boristeider您能解释一下我如何使用LocalDateTime来做这件事吗,如何将时间戳的特定格式字符串转换为本地时间。提前感谢。1)将字符串
解析为LocalDateTime
。2) 正如Boris所说,你不能直接将它们作为字符串进行比较,从而得到你想要的时间顺序。您需要首先将字符串
转换为临时对象。Java8中的Java日期时间API非常适合这种情况。一旦将字符串作为时态对象,例如LocalDateTime
实例,就可以使用isEqual()
或compareTo()
对它们进行比较。由于这些时间已经是UTC时间,您还可以直接比较从Instant.toEpochMilli()
获取的POSIX时间整数值,以进行时间顺序。@Boristeider您能解释一下我如何使用LocalDateTime来做这件事吗,如何将时间戳的特定格式字符串转换为本地时间。提前感谢。我目前正在使用Java 7,它不支持DateTimeFormatter。我使用SimpleDateFormat尝试了多种不同的方法,SimpleDateFormat相当于DateTimeFormatter,但失败了。但是,是的,非常感谢您提供上述解决方案。这正是我想做的。我目前使用的是Java 7,它不支持DateTimeFormatter。我使用SimpleDateFormat尝试了多种不同的方法,SimpleDateFormat相当于DateTimeFormatter,但失败了。但是,是的,非常感谢您提供上述解决方案。这正是我想做的。而且不支持即时。