以 UTC 存储时间总是一个好主意,还是在这种情况下以本地时间存储更好?

2023-11-25

一般来说,最好的做法是用 UTC 存储时间,如中所述here and here.

假设有一个重复发生的事件(假设结束时间始终为同一当地时间(假设为 17:00)),无论该时区是否启用夏令时。并且还要求在特定时区的 DST 打开或关闭时不要手动更改时间。还有一个要求是,每当任何其他系统通过 API(即 GetEndTimeByEvent)询问结束时间时,它始终以 UTC 格式发送结束时间。

方法一:如果决定的话以 UTC 存储它可以存储在数据库表中,如下所示。

Event      UTCEndTime
=====================
ABC         07:00:00
MNO         06:00:00
PQR         04:00:00

对于第一个事件 ABC,UTC 结束时间为上午 07:00,如果在 2012 年 7 月 1 日转换为从 UTC 显示为当地时间,则结果将显示为 17:00 当地时间,如果在 2012 年 10 月 10 日转换(时区 DST 开启的日期)将导致下午 6 点,这不是正确的结束时间。

我想到的一种可能的方法是将 DST 时间存储在附加列中,并在时区启用 DST 时使用该时间。

方法2:然而,如果是存储为当地时间如下所示,对于事件 ABC,任何日期都将始终为 17:00,因为没有从 UTC 转换为本地时间。

Event      LocalEndTime
=======================
ABC         17:00:00
MNO         16:00:00
PQR         14:00:00

应用层将本地时间转换为UTC时间,通过API GetEndTimeByEvent发送给其他系统。

在这种情况下,以 UTC 存储时间仍然是一个好主意吗?如果是,那么如何获得恒定的本地时间?

相关问题:是否有充分的理由不使用 UTC 存储时间?


我认为为了回答这个问题,我们应该考虑使用 UTC 存储时间戳的好处。

我个人认为这样做的主要好处是时间总是(大部分)保证是持续的。换句话说,每当更改时区或应用 DST 时,您都无法及时返回或返回。这在文件系统、日志等中特别有用。但这是吗必要的在你的应用程序中?

想想两件事。首先,关于夏令时时钟移位的时间。您的活动有可能发生在凌晨 2 点到 3 点之间(时钟调整结束当天)吗?那么应该发生什么?

其次,应用程序是否会受到实际时区变化的影响?换句话说,您打算乘坐它从伦敦飞往华沙,并适当更改您的计算机时区吗?在这种情况下应该发生什么?

如果你回答no对于这两个问题,那么你最好使用当地时间。这将使您的申请更加简单。但如果你回答yes至少一次,那么我认为你应该多思考一下。


这就是数据库的全部内容。另一件事是应用程序内部使用的时间格式,这应该取决于您实际上将用该时间做什么。

您提到它通过 API 公开时间。应用程序是否会在每次请求时都会查询数据库?如果您在内部将时间存储为 UTC,则您需要这样做,或者确保在 DST/时区更改时,缓存的时间将得到调整/修剪。

它会对时间本身产生什么影响吗?喜欢印刷该事件将在 8 小时后发生或者大约在那个时候暂停自己?如果是的话,那么 UTC 可能会更好。当然,你需要考虑到上述所有问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以 UTC 存储时间总是一个好主意,还是在这种情况下以本地时间存储更好? 的相关文章

  • PHP DateTime::修改加减月份

    我一直在与DateTime class http www php net manual en class datetime php最近在添加月份时遇到了我认为是一个错误 经过一番研究后 看来这不是一个错误 而是按预期工作 根据查到的文档he
  • java中如何格式化日期字符串? [复制]

    这个问题在这里已经有答案了 您好 我有以下字符串 2012 05 20T09 00 00 000Z 我想将其格式化为 20 05 2012 9am 在java中如何做到这一点 Thanks 如果您正在寻找针对您的特定情况的解决方案 那么它将
  • 如何在 Python 中根据日期列绘制分类变量

    我有这样的数据 Date Fruit 2017 01 01 Orange 2017 01 01 Apple 2017 01 08 Orange 2017 01 09 Orange 2017 01 09 Apple 我想在一个图中按日期绘制橙
  • Php 转换 GMT 格式的时间

    我有这个字符串2012 06 27 16 17 06我想将其转换为 GMT 格式 我怎样才能做到这一点 多谢 Use gmdate http php net manual en function gmdate php 使用以下命令将当前日期
  • Javascript Date.parse 以破折号分隔并以年份开头时的错误

    我正在寻求确认这是否是真正的文档和 或 Javascript 的 Date parse 方法的实现错误 我所指的文档位于https developer mozilla org en JavaScript Reference Global O
  • 为什么 System.nanoTime() 比 System.currentTimeMillis() 慢(性能)?

    今天我做了一个快速基准测试来测试速度性能System nanoTime and System currentTimeMillis long startTime System nanoTime for int i 0 i lt 1000000
  • 改进R中从google获取股票新闻数据的功能

    我已经编写了一个函数来从 Google 获取和解析给定股票代码的新闻数据 但我确信有一些方法可以改进它 对于初学者来说 我的函数返回一个 GMT 时区的对象 而不是用户当前的时区 如果传递的数字大于 299 它就会失败 可能是因为 goog
  • 如何在python中转换1970年之前的日期

    我写了一个方法来处理 mongodb 结果 其中日期为datetime datetime i used dumps方法 该方法将日期转换为不是毫秒 这里如果日期在 1970 年之前 则日期将转换为负值 我无法处理此问题以更改回 1970 年
  • 使用 JavaScript 格式化日期

    JavaScript 中的日期格式有问题 这是我的函数代码 originalDate 2016 03 02 09 12 14 989522 var d new Date originalDate month d getMonth 1 day
  • 计算轮班工作时间并检测

    我有个问题 我的英语很差 我需要用PHP做一个加班计算 已经有一个代码可以实现这一点 但当工作时间超过2天时 计算就会出错 工作开始 2018 09 09 13 43 工作结束 2018 09 11 07 13 结果 07 18 04 00
  • 如何在 MSSQL 中获取 CURRENT_DATE?

    我正在使用 jpa 3 o 和 Hibernate 我有一个命名查询 SELECT COUNT wt id FROM WPSTransaction wt WHERE wt createdDate gt CURRENT DATE WPSTra
  • 将时间添加到日期时间

    我有一个像这样的日期字符串 然后使用strptime 所以就像这样 my time datetime datetime strptime 07 05 15 m d Y 现在我想添加 23 小时 59 分钟my time 我努力了 timed
  • 有没有办法改变输入类型=“日期”格式?

    默认情况下 输入type date 显示日期为YYYY MM DD 问题是 是否可以将其格式强制为 DD MM YYYY 无法更改格式 我们必须区分有线格式和浏览器的表示格式 接线格式 The HTML5日期输入规范 https www w
  • 将日期差转换为年数以计算 MongoDB 中的年龄

    我正在使用以下方法来计算时间戳差异中的年龄 db getCollection person aggregate project item 1 DOB personal DOB dateDifference subtract new Date
  • Python日期字符串到日期对象

    如何在 python 中将字符串转换为日期对象 该字符串将是 24052010 对应格式 d m Y 我不需要 datetime datetime 对象 而是 datetime date 您可以使用strptime http docs py
  • 在 MS Access SQL 查询中从正常日期转换为 unix 纪元日期

    我正在尝试编写一个通过 ODBC 连接到 MySQL 数据库的 MS Access 2007 连接的查询 一切工作正常 查询执行我想要的操作 我挂断的部分是我一直在询问用户 unix 纪元时间 而不是常规日期 我查找了 MS Access
  • Java:如何为山区时间创建 TimeZone 对象?

    必须不禁用夏令时 嗯 在这个清单 http en wikipedia org wiki List of tz database time zones在 zoneinfo 时区名称中 有很多声称是 山地时间 找到最适合您想要的那个 然后使用它
  • 从日期变量创建月末日期

    我有一个包含日期变量的大型数据框 它反映了该月的第一天 有没有一种简单的方法来创建代表该月最后一天的新数据框日期变量 以下是一些示例数据 date start month seq as Date 2012 01 01 length 4 by
  • 使用 NSDateFormatter 从字符串中获取日期,无论 12 小时到 24 小时设置如何

    今天我的问题是关于日期格式和字符串 我的应用程序从互联网下载一些表示日期的字符串 日期格式始终是这样的 2010 05 24 at 20 45 我需要将此字符串转换为 NSDate 对象才能执行一些日期操作 我尝试了这段代码 NSStrin
  • 计算日期之间的天数差异

    在我的代码中 日期之间的差异是错误的 因为它应该是 38 天而不是 8 天 我该如何修复 package random04diferencadata import java text ParseException import java t

随机推荐

  • 如何在 Laravel 中流式传输视频

    我正在尝试流式传输刀片文件中的视频 通常视频正在加载 但我无法来回播放 这是我关注的链接 https codesamplez com programming php html5 video streaming tutorial 我已经在我的
  • 当类型已知时,是否有任何技术原因在 C# 中使用或不使用 var?

    我读到的 C 代码似乎越来越多地使用var类型标识符 foreach var itemChange in ItemChanges 代替明确地说明类型 foreach ItemChange itemChange in ItemChanges
  • 如何从.cer和.key获取.pfx文件?

    在此提问之前 我已经搜索了很多关于我的问题 而且问题仍然存在 以下是我已经阅读过的帖子参考 如何从证书和私钥创建 pfx 文件 将 CERT PEM 证书转换为 PFX 证书 如何从 key和 crt文件获取 pem文件 如何从 cer 文
  • 划分类:jenks 与 kmeans

    我想将一个向量 长度约为 10 5 分为五个类 具有功能classIntervals从包装中classInt我想用style jenks 自然中断 但即使对于只有 500 的小得多的向量 这也会花费大量时间 style kmeans 几乎立
  • 使用 DataContext 从 LINQ 查询填充 DataTable 的最快方法

    我正在尝试运行 linq 查询 但我需要结果作为数据表 因为我使用它来将来自不同查询的记录存储在同一视图状态对象中 下面的 2 个版本可以编译 但返回一个空集 确切的错误是 值不能为空 参数名称 来源 是的 我已经检查过有数据 MyData
  • 当前分支没有跟踪信息

    我使用 github 的时间相对较短 并且一直使用客户端来执行提交和拉取 我昨天决定从 git bash 尝试一下 并成功创建了一个新的存储库并提交了文件 今天我从另一台计算机对存储库进行了更改 我已经提交了更改 现在我回到家并执行了git
  • React:读取history.push中作为参数传递的数据

    我是新来反应的 我正在尝试发送一些数据作为参数history push 基本上 我在单击按钮时调用一个方法 并在该方法内调用一个 api 如果我得到成功响应 我会重定向到其他页面 并且我还需要传递一些数据 下面是我的代码 class Log
  • 在 ElasticBeanstalk 上运行 Grunt

    我有一个节点应用程序 需要 grunt 进行 构建 然后应用程序才能成功执行 运行源代码的连接 缩小 加速等 我已经在具有 SSH 访问权限的 EC2 实例上运行了它 因为我可以通过 SSH 进入目录并在部署过程中运行 Grunt 然而 为
  • 为什么“gem”和“bundle”不使用相同的 libxml2?

    我似乎陷入了沮丧的递归循环中 我正在尝试 捆绑安装 一个项目 但结果是 An error occurred while installing nokogiri 1 6 6 2 and Bundler cannot continue Make
  • 如何防止两个CUDA程序互相干扰

    我注意到 如果两个用户尝试同时运行 CUDA 程序 它往往会锁定卡或驱动程序 或两者 我们需要重置卡或重新启动机器以恢复正常行为 有没有办法锁定 GPU 以便其他程序在运行时无法干扰它 Edit 操作系统是在服务器上运行的 Ubuntu 1
  • 在Java中,字符串是字符数组吗?

    我想知道 如果String是一个集合 我已经阅读了周围的内容 但仍然很困惑 字符串是不可变的表示字符序列的对象 CharSequence是 String 实现的接口之一 与字符数组和字符集合的主要区别 字符串无法修改 不可能 忽略反射 添加
  • 从两个日期之间的日期范围中选择数据

    我有一张名为Product Sales它保存这样的数据 Product ID Sold by Qty From date To date 3 12 7 2013 01 05 2013 01 07 6 22 14 2013 01 06 201
  • 如何在 React 中使用 RXJS fromEvent?

    我试图在反应中记录按钮上的点击事件 const InputBox gt const clicky fromEvent document getElementById clickMe click subscribe clickety gt c
  • 如何创建数组的随机排列?

    我已经用 C 编写了这个函数 我希望它创建一个随机排列或从 1 到 n 的数字列表 我很难让它没有重复的数字 因此 如果您有 n 4 我希望它返回一个包含 1 4 的随机数组 每个数组仅一次 例如 1 3 4 2 int random in
  • 如何使用 powershell 为 Windows 10 通用应用程序创建桌面快捷方式?

    我有一个创建的 UWP 应用程序 想要使用 powershell 在桌面上创建快捷方式 创建快捷方式对于 exe 来说很容易 TargetFile Path To MyProgram exe ShortcutFile env USERPRO
  • 访问相关对象键而不在App Engine中获取对象

    一般来说 对给定对象执行单个查询比执行多个查询更好 假设我有一堆 儿子 对象 每个对象都有一个 父亲 我得到了所有 儿子 对象 sons Son all 然后 我想找到那群儿子的所有父亲 我愿意 father keys for son in
  • 如何将GET参数传递给jsFiddle

    如何将GET参数传递给jsFiddle 我试过http jsfiddle net mKwcF id 123但我得到的只是http fiddle jshell net mKwcF show 我的示例 js 在上面给定的链接上很简单 alert
  • 如何让建议组件在 SolrNet 中工作?

    我已经配置了 solrconfig xml 和 schema xml 来查询建议 我可以从网址中获取建议 http localhost 8080 solr collection1 suggest q ha wt xml 我的 SolrCon
  • 现代 n 层 ASP.NET Web 应用程序示例?

    所以我的 asp net 非常非常生锈 我正在尝试回到最佳实践以及其他什么 因此 我快速搜索谷歌并开始寻找示例 示例和教程 但我找到了什么 甚至在石器时代 最新 技术发布之前就已经写了一些陈旧的硬壳东西 当然 这些概念可能仍然有效 但实际执
  • 以 UTC 存储时间总是一个好主意,还是在这种情况下以本地时间存储更好?

    一般来说 最好的做法是用 UTC 存储时间 如中所述here and here 假设有一个重复发生的事件 假设结束时间始终为同一当地时间 假设为 17 00 无论该时区是否启用夏令时 并且还要求在特定时区的 DST 打开或关闭时不要手动更改