当前位置: 首页 > 知识库问答 >
问题:

将localDate与UTC一起使用

岑畅
2023-03-14

我在UTC中使用LocalDate时遇到问题。我的服务器使用UTC,我的数据库使用UTC。我使用LocalDate来存储基于订阅的应用程序的计费日期。

发生的情况是,我们在UTC午夜计费(当进行类似于计费日期的比较时

我真的觉得在这里使用LocalDate是合适的,因为我们只是想在那天的某个时候开账单。然而,无论是直接在代码中还是在数据库中进行比较(billing_date

有没有人对这种情况有经验并找到了一个好的解决方案

我看了一下这个问题,但是它没有回答我的问题:春假本地日期UTC相差一天

共有2个答案

方斌
2023-03-14

我觉得您应该使用Instants。

我真的觉得在这里使用LocalDate是合适的,因为我们只是想在那一天的某个时候计费。

嗯,没有。您确实关心计费时间,因为数据库关心时间。它将计费时间存储为 00:00 UTC。由于这是一个瞬间,我认为即时将是这里最合适的选择。您也可以使用 ZonedDateTime,但考虑到您可能正在从数据库中获取 java.sql.Date,该数据库已经有一个 toInstant 方法,使用 Instants 更方便。

你可以从一年、一月、一天中得到一个瞬间,就像这样:

LocalDate ld = LocalDate.of(2019, 7, 8);
Instant i = ld.atStartOfDay(ZoneId.of("America/Los_Angeles")).toInstant();

美国/Los_Angeles是PST。

仲和韵
2023-03-14

我建议这只是将所需的时区传递给LocalDate.now(ZoneId)的问题。

  • 使用 LocalDate.now(ZoneId.of(“Asia/Manila”)) 获取菲律宾标准时间。目前它大喊2019-07-09。
  • 使用 LocalDate.now(ZoneId.of(“Pacific/Pitcairn”)) 作为皮特凯恩标准时间。它只是给了2019-07-08。

我假设你的意思不是太平洋标准时间,因为没有时区使用太平洋标准时间(那些在冬天使用的时区,现在是太平洋夏令时)。无论如何,请注意,三个字母的时区缩写通常是模棱两可的。

现在有方法的java.time类通常有三个重载变体:

  1. 一个采用ZoneId参数的方法,我建议一般使用
  2. 一个采用<code>Clock</code>参数的方法,该方法对可测试性非常好。时钟包含一个时区,因此这个时区也会为您提供指定时区的当前日期和/或时间
  3. 一个不带任何参数并且使用JVM的默认时区的方法。我建议你永远不要使用它。读者很高兴知道你已经考虑了时区并选择了你想要的时区。而且,在同一JVM中运行的任何程序都可以随时更改默认时区,因此它不够稳定,无法用于实际工作
 类似资料:
  • 问题内容: 我有一个以毫秒为单位的UTC日期,我将该日期传递给Angular的日期过滤器以进行人工格式化。 很棒,除了在UTC中,而且日期过滤器认为它在当地时间。 我怎样才能告诉Angular这是UTC? 谢谢。 问题答案: 类似的问题在这里 我将重新发布我的回复并提出合并建议: 输出UTC似乎引起了一些混乱-人们似乎倾向于使用moment.js。 从此答案中借用,您可以执行以下操作(即,使用带有

  • 问题内容: 因此,我一直在为这个(应该是)简单的练习而绞尽脑汁,以使该程序将日期字符串转换为对象,对其进行格式化,并在完成后将其作为字符串再次返回。 这是程序的最后一点,它从文件中获取一小段文本,将其分解为单独的记录,然后将记录分解为单独的数据并将它们分配给个人对象。 我已经在多个位置检查了该代码,并且该代码完全执行了应该执行的操作,直到调用了format函数(该函数抛出)为止。为对象分配了应该分

  • 问题内容: 我想在目录中获取具有特定扩展名的文件列表。在中,我看到了可以做到这一点的方法。 由于我需要特定的扩展名,因此我创建了一个。但是,当我与此一起使用时,出现编译错误。我以为自以来,我应该能够做到这一点。代码如下: 最后一行显示编译错误: 类型的方法不适用于类型的参数 我正在尝试使用,不是。为何编译器无法识别这一点? 如果我编写自己的扩展筛选器,则此方法有效。我宁愿使用而不愿自己写。我究竟做

  • 问题内容: 我正在尝试在我的watchKit应用中使用firebase数据库。我已经在我的iPhone应用程序上开发了此功能,但是发现在我的Watch应用程序上很难做到这一点。当我尝试将firebase导入watch应用程序的VC类中时,它正在创建error 。 可以在Watch app中使用Firebase吗? 问题答案: 可悲的是,没有支持,并由于这样的事实,有没有支持在这些版本中,并高度依赖

  • 问题内容: 当请求来自Ajax.ActionLink(使用Http方法发布)时,是否可以在控制器操作上使用ValidateAntiForgeryToken属性。替代方法似乎是手动滚动JQuery Ajax请求,但我很好奇MVC Ajax框架中是否有办法。 问题答案: 我还没看过。您必须将令牌放入POST中记录的数据中。每次都使用相同的防伪令牌ID(或名称,我不记得了),但是您必须非常小心,并确保您

  • 问题内容: 最近,我开始与路由器一起使用来构建应用程序。 我通常将use 用于依赖项和代码管理。但是,当我尝试包含包含语法的文件时会出现问题。 这就是我目前所拥有的: 如何将IndexComponent放在其自己的文件中并在此文件中调用它?我尝试了通常的方法(与骨干和反应相同),但是由于语法错误。 问题答案: 所以我自己弄清楚了。 我从此仓库获得了必要的文件和说明:jsx- requirejs-p