scala - 使用 Java.time 将日期时间转换为纪元时如何处理边缘情况
问题描述
这是我将日期时间转换为纪元时间戳的代码,有一种情况我不知道如何处理,如果区域信息包含在时间戳中并且没有作为第三个参数传递给该函数,它将始终被转换尽管时间戳中的时区是UTC,但如何解决这个问题?
time_to_epoch(List(JString("2007-12-03T10:15:30 CET"), JString("yyyy-MM-dd'T'HH:mm:ss z"))) shouldEqual JString("1196669730000")
time_to_epoch(List(JString("2007-12-03T10:15:30+02:00"), JString("yyyy-MM-dd'T'HH:mm:ssXXX"), JString("CEST"))) shouldEqual JString("1196669730000") time_to_epoch(List(JString("2007-12-03T10:15:30 CEST"), JString("yyyy-MM-dd'T'HH:mm:ss z"))) shouldEqual JString (“1196673330000”)
whatever timezone in the timestamp, the result is wrong, i.e, CEST(+02:00), output (+01:00), America/Mexico_City(+05:00), output (+04:00)
解决方案
如果时区数据可以是字符串的一部分,那么无论是否默认提供,timestamp
您都应该让它覆盖字符串。timezone
formatter.parseBest(timestamp, ZonedDateTime.from _
, LocalDateTime.from _
, LocalDate.from _) match {
case zdt: ZonedDateTime =>
JString(zdt.toInstant().toEpochMilli.toString)
case ldt: LocalDateTime =>
. . .
推荐阅读
- kentico - 重复内容管理
- python - Python `requests` 获取 JSON 响应的生成器对象
- php - 如何使用 Twig 的属性函数访问嵌套对象属性
- flutter - 使用 Flutter 开发 SDK 用于 Native iOS 和 Android
- sql - SELECT WHERE 属性 = 表单控件值找不到记录
- python - 如何获得新闻的描述?
- nginx - 有没有办法将 NGinx 配置为外部资源的代理?
- view - 替换 BigQuery 中的视图:是否存在“时间漏洞”?
- c# - 使用可观察集合绑定创建自定义视图是否正确
- javascript - 用于匹配名字后跟没有空格的正则表达式