java - 将 UTC 时间字符串转换为 UTC 毫秒
问题描述
我得到一个时间字符串,它是 UTC 格式的日出/日落时间HH:mm
例子:
09:35
目前我这样做是为了使用java.time
库将给定时间转换为当前日期UTC
val utcZoneId = ZoneId.of("UTC")
val now = Instant.now()
val dateTimeFormater:DateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd").withZone(utcZoneId)
val date = dateTimeFormater.format(now)
val fullDateSunrise = "${date}T${data[0].sunrise}:00"
val local = LocalDateTime.parse(fullDateSunrise, DateTimeFormatter.ISO_LOCAL_DATE_TIME)
val final = local.atZone(utcZoneId)
val utcSunrise = final.toInstant().toEpochMilli()
val fullDateSunset = "${date}T${data[0].sunset}:00"
val local2 = LocalDateTime.parse(fullDateSunset, DateTimeFormatter.ISO_LOCAL_DATE_TIME)
val final2 = local2.atZone(utcZoneId)
val utcSunset = final2.toInstant().toEpochMilli()
然后,一旦我拥有它们,我就会将 UTC 毫秒数传回给客户端
它可以按我的需要工作,但我可以提供帮助,但我觉得必须有一种更简单的方法,而不是获取格式化的 UTC 日期字符串并将其与给定时间结合,然后将其转换为实际的 DateTime 对象。
所以问题是,有没有更简单的方法来做到这一点?
解决方案
当然,您绝对不需要来回解析字符串。我假设输入09:35
方法:当地时间 09:35,太阳将升起。请注意,您会混淆事物;UTC 是一个区域,像这样的输入09:35
是无区域的。我怀疑这个邮票代表“UTC”;这意味着东京今天日出的正确值是-5:25
,因为它将是19:25
,前一天,在今天太阳在东京升起的 UTC 时区。
一旦您停止使用 UTC 区域,它就会变得更加简单:
DateTimeFormatter TIME_FORMAT = DateTimeFormatter.ofPattern("HH:mm");
LocalDateTime sunriseToday = LocalDateTime.now().with(LocalTime.parse("04:35", TIME_FORMAT));
ZonedDateTime inTokyo = sunriseToday.atZone(ZoneId.of("Asia/Tokyo"));
return inTokyo.toInstant().toEpochMilli();
请注意,这将返回太阳在东京升起的确切时间。将其打印为 ISO 印章,那就是2020-06-09T19:35Z
.
如果您真的想要匹配的 epoch-millis 2020-06-10T04:35Z
- 说清楚是没有意义的,那根本不是今天太阳在东京升起的时候!- 然后...
DateTimeFormatter TIME_FORMAT = DateTimeFormatter.ofPattern("HH:mm");
LocalDateTime sunriseToday = LocalDateTime.now().with(LocalTime.parse("04:35", TIME_FORMAT));
ZonedDateTime inTokyo = sunriseToday.atZone(ZoneId.of("Asia/Tokyo"));
ZoneDateTime thisMakesNoSense = inTokyo.withZoneSameLocal(ZoneOffset.UTC);
return thisMakesNoSense.toInstant().toEpochMilli();
推荐阅读
- linux - 更改 nvme 设备的控制器数量
- python - 通过与其他列表中的列表匹配来过滤列表列表,无论它们的位置如何
- javascript - 当我正在测试的文件通过从卸载的 DOM 中抓取一个元素开始时,我如何在 Jest 中运行测试?
- python-3.x - 在 Juypter Notebook 中导入 python 文件时出现缩进错误
- firebase - 如何在返回流的函数中获取当前用户
- postgresql - 如何使用 Peewee 模型定义几何字段
- angular - 如何让我的日期选择器以模态显示
- javascript - 如何在调用 chart.update() 时阻止图表 js 自动重新缩放 y 轴?
- python - 如何在纯python中实现简单的客户端-服务器交互?
- python - base64.b64decode() 输出差异:Python 2 与 Python 3