什么时候可以将日期时间存储为本地时间而不是 UTC?

2023-12-03

这是一个类似于this one.

我真的很想在我的应用程序中将日期时间存储为本地时间而不是 UTC(这被认为是最佳实践)。在应用程序中,我发生了许多事件,每个事件都分配给给定的位置。当我向用户显示它们时,我总是想显示local活动时间。 IE。:

====================================================================================
Event time (with TZ)   | As UTC           | As local time    | To be displayed  |
====================================================================================
2014-01-15 22:30 GMT   | 2014-01-15 22:30 | 2014-01-15 22:30 | 2014-01-15 22:30 |
2014-01-15 23:30 GMT+1 | 2014-01-15 22:30 | 2014-01-15 23:30 | 2014-01-15 23:30 |
2014-01-16 00:30 GMT+2 | 2014-01-15 22:30 | 2014-01-16 00:30 | 2014-01-16 00:30 |
====================================================================================

如果我决定以 UTC 格式存储事件时间:

  • 显示它们将很困难(因为对于每个事件,我都需要该事件的时区并格式化该时区的日期)。

  • 查询它们将非常困难(即,如果我想显示当地时间 2014 年 1 月 15 日发生的所有事件,我需要每个事件将该事件的时间与该事件中“2014-01-15”的含义进行比较时区。不确定这在 SQL 中是否可能......)

如果我决定将事件时间存储为当地时间:

  • 我将无法比较不同地点的活动时间(但这对我来说没问题)

由于在应用程序的绝大多数情况下,我对当地时间(通常显示所谓的“电视时间”)感兴趣,并且在很多情况下我创建新的日期时间对象(为此我需要位置时区),我相信在这种情况下将日期时间保存为当地时间是合理的。

你认为是吗?存储当地时间还有哪些其他缺点?

预先感谢您的关注和帮助。


最常被忽视的情况not使用 UTC 是为了安排future次 - 特别是在复发模式.

想象一下,如果您的闹钟是按 UTC 安排的。假设您将其设置为每天上午 7:00。在 DST 转换后的第二天,您会在上午 6:00 或上午 8:00 醒来,具体取决于转换的方向。

此外,我们确定时区偏移和夏令时变化的规则会一直更新!所以你不能把未来的本地时间转换为 UTC 时间而不需要also保留当地时间本身。否则,当事情发生变化时,你就不会有原始的真理来源,你的所有时间都会再次消失。

我已发布于this many times before.

当然,一旦事件发生,您肯定希望记录 UTC 时间,或者使用日期时间偏移量.

另一个常见的用例是没有时间的日期,尤其是生日和其他周年纪念日。这些应该始终存储为年、月、日(例如在date大多数数据库中的字段类型) - 时区或 UTC 之间没有转换。

关于您的具体观点:

如果我决定以 UTC 存储事件时间...将很难显示它们...

这实际上很容易。几乎每个编程环境都可以轻松做到这一点。唯一困难的地方是在非本地时区的 JavaScript 中,并且有一些库可以解决这个问题。

如果我决定以 UTC 存储事件时间...查询它们将非常困难(即,如果我想显示当地时间 2014 年 1 月 15 日发生的所有事件,我需要每个事件比较该事件的时间'2014-01-15' 在该事件的时区中意味着什么。不确定这在 SQL 中是否可能......)

那是真实的。每个人的“今天”都是不同的。如果您需要与浮动“日”相关的数据,那么这是不存储在 UTC 中的另一种情况。然而,一个DateTimeOffset会给你两者的优点。

如果我决定将活动时间存储为当地时间...我将无法比较不同地点的活动时间(但这对我来说没问题)

不仅如此。没有偏移量的本地 DateTime 可能会不明确夏令时回退过渡。因此,您可能有一个本地值,但您无法区分它对应于两个时间点中的哪一个。

关于“电视时间”——将该概念保留给真正“浮动”的事物。示例:一家公司在世界各地设有办事处,办事处均在上午 8:00 开始工作。那是一段漂浮的时光。

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

什么时候可以将日期时间存储为本地时间而不是 UTC? 的相关文章

  • 在 C++20 中获取当前日期/时间是线程安全的吗?

    简短的问题 在 C 17 之前 包括 C 17 C 不提供线程安全的方式来获取当前时间或日期 这个问题会在 C 20 中修复吗 长问题 获取当前时间和日期的唯一可移植方法是使用 std gmtime 或 std localtime 函数 这
  • 相对于时间求平均值

    我有以下带有日期时间和相应值的数据集 时间间隔为每10分钟一次 我需要以 15 分钟的间隔生成新行 例如 15 40 的值为 599 15 50 的值为 594 因此需要在两者之间生成一个新行 即 15 45 的平均值为 599 和 594
  • 将 UTC 日期转换为 PHP 本地时间

    我使用以下方法将 UTC 日期存储到数据库中 utc gmdate M d Y h i s A 然后我想将保存的 UTC 日期转换为客户端的本地时间 我怎样才能做到这一点 Thanks 如果客户端指的是浏览器 那么您首先需要从浏览器将时区名
  • 如何以 HH:MM 表示小数时间

    我有一个十进制格式的时间 22 13以小时为单位 我想在 R 中将其表达为HH MM 我是说 22 08 贬值秒 有人可以帮助我吗 语法 02 0f是将值四舍五入为整数并使其始终为 2 个单位 所以 7 8分钟将转换为字符 08 x lt
  • 将 DateTime.MinValue 转换为 DateTimeOffset

    我正在尝试将 DateTime MinValue 转换为 DateTimeOffset 值 但收到 ArgumentOutOfRange 异常 我正在看有关 DateTime 到 DateTimeOffset 隐式转换的 MSDN 文章 h
  • 如何在android中将时间转换为“时间之前”

    我的服务器 返回时间 2016 01 24T16 00 00 000Z I want 1 转换为字符串 2 我希望它在从服务器加载时显示 不久前 请 帮我 我认为主要有三种方式 a 内置选项使用SimpleDateFormat and 日期
  • merge.zoo 删除时区

    的结果merge zoo与其输入的时区不同 考虑下面的例子 library zoo zoo a zoo data frame a 1 5 seq as POSIXct 2014 01 01 00 00 01 tz UTC as POSIXc
  • 使用 Elixir 设置日期格式

    我正在尝试将 Timex 模块格式化为某种外观 我正在尝试获取今天的日期 但我希望它的格式如下 2017 12 12 年 月 日 在 ruby 中 我会去 strftime 类 但我不知道如何使用 Elixir 来做到这一点 目前的尝试 T
  • 如何使用joda时间将固定的毫秒数格式化为hh:mm:ss?

    我输入了 34600 毫秒 我想以 00 00 34 HH MM SS 的格式输出 为此我应该查看 JDK Joda time 的哪些类 我需要它是高效的 最好是线程安全的 以避免每次解析时创建对象 谢谢 编辑 使用此代码提供时区敏感的结果
  • 除了在断点处停止之外,如何测量一大块代码的时间?

    我正在 Windows 上开发 C 游戏 模拟 图形应用程序 编辑开始 如果重要的话 我正在使用 Visual Studio 2013 编辑完 Setup 我正在使用 QueryPerformanceCounter 测量从一帧到下一帧的时间
  • Python Pandas 系列失败日期时间

    我认为这一定是 pandas 的失败 有一个 pandas 系列 v 18 1 和 19 如果我为该系列分配一个日期 第一次将其添加为 int 错误 第二次将其添加为 int 错误 添加为日期时间 正确 我无法理解原因 例如使用以下代码 i
  • R:变换不规则时间字符串

    我有两个不同的时间序列 来自不同的数据帧 具有不同的不规则格式 但问题是相同的 我只想提取小时 分钟 秒和毫秒 时代系列看起来像这样 ts1 08 27 23 445 08 27 24 280 08 27 25 115 I tried st
  • PHP 时区问题 |英国夏令时和格林威治标准时间

    我开发了一个应用程序 它记录某些记录的修改和创建时间 所以基本上我们使用time 保存更改时进行记录的功能 我在英国 所以我的时区必须是 GMT 然而在英国 我们使用夏令时 所以在夏天我们不再使用格林尼治标准时间 而是使用英国夏令时 我如何
  • 在 LINQ 中确定具有分钟精度的日期时间值的相等性

    我需要使用分钟精度比较两个日期时间值以确定相等 完全相同 这是最好的方法吗 我的日期可能有秒和毫秒 但我只想考虑到分钟 where Math Abs datetime1 Subtract datetime2 TotalMinutes 0 检
  • 评估 df 每行中的日期时间函数是否落在另一个 df 中的日期时间范围内

    我是 python 新手 需要一些帮助来解决有关日期时间函数的问题 I have df a其中有一列标题为time 我正在尝试创建一个新专栏id在这个df a 我想要id根据时间是否包含在某个时间范围内来确定的列df b date 和 da
  • PHP 如何查找自日期时间以来经过的时间? [复制]

    这个问题在这里已经有答案了 如何查找自日期时间戳记以来经过的时间2010 04 28 17 25 43 最终输出文本应该是这样的xx Minutes Ago xx Days Ago 大多数答案似乎都集中在将日期从字符串转换为时间 您似乎主要
  • 将 R 中的时间数据绘制为各种分辨率(分钟、小时、秒等)

    我有一些 CSV 数据 例如 Timestamp Count 2009 07 20 16 30 45 10 2009 07 20 16 30 45 15 2009 07 20 16 30 46 8 2009 07 20 16 30 46 6
  • R:如何将描述小时、分钟和秒的非直观字符串转换为可行的 POSIXct 格式以执行标准算术?

    我在 R 中有一个数据集 其值采用小时 分钟和秒格式 然而 有些值只有小时和分钟 有些值只有分钟和秒 有些值只有分钟 有些值只有秒 它的格式也不是很有利 样本数据如下 example lt as data frame c 22h28m 17
  • 将 NSDate 转换为 SWIFT 中具有特定时区的字符串

    在我的核心数据库中 我有一个带有 NSDate 属性的 新闻 实体 我的应用程序遍布全球 新闻已发布2015 09 04 22 15 54 0000法国时间 GMT 2 为了保存日期 我将其转换为 UTC 格式 let mydateForm
  • PHP 时间间隔

    我正在寻找一个看起来应该非常简单的解决方案 但似乎我不能在这里找到任何好的答案 而且我自己似乎无法让它发挥作用 我正在寻找的是设置开始时间 结束时间 然后迭代给定时间间隔之间的一组时间 例如 上午 9 00 下午 5 00 是开始时间 这些

随机推荐

  • Puppeteer 不会更改选择器

    我正在尝试自动执行查询数据的任务这个网站使用木偶师 因此 我需要选择数据集 每日摘要 第一个选项 然后选择位置类型 州 第三个选项 然后选择州 阿拉斯加 第二个选项 问题是我的代码没有更改为下一个表 因此 它不是在选择数据集中的第一个选项
  • python 函数中的调和平均值?

    我有两个函数可以给出精确度和召回率分数 我需要在使用这两个分数的同一库中定义一个调和平均函数 函数如下所示 这是函数 def precision ref hyp Calculates precision Args ref a list of
  • 从异步函数返回值node.js

    我知道这是 javascript 中关于函数异步行为最常见的问题 我仍然无法为我的用例找出可行的解决方案 我想做的是使用键查找 redis 缓存 我正在使用存在函数来检查密钥是否存在 如果存在 那么我将从缓存返回 如果不存在 那么我将设置该
  • Safari 媒体查询打印未正确使用 100% 高度

    我正在对一个应用程序使用打印媒体查询 该应用程序在 Chrome Edge Firefox 上运行良好 但在 Safari 上失败 我使用高度 100 是为了让它填充打印页面 在 safari 上它似乎使用百分比作为元素本身的百分比 我在下
  • 未处理的 Promise 拒绝:this._next 不是函数:@angular/fire/messaging 中的区域

    当我在前台收到 firebase 推送通知时 通过使用 angular fire messaging 方法是 this angularFireMessaging messages subscribe payload gt console l
  • 如何在 Javascript 中设置 cookie 在 1 小时后过期?

    如何设置此 cookie 在当前时间一小时后过期 document cookie username value expires WHAT GOES HERE path Code var now new Date var time now g
  • Socket.io android java客户端接收消息和发送文件示例

    有谁有任何示例代码演示如何在 java 客户端上接收 socket io 的消息 另外 是否有从同一个 socket io java 客户端发送文件 二进制 图片的示例 基本上是来自java而不是javascript客户端的示例代码 and
  • Datagrid wpf C# 应用程序中的复选框

    我正在使用数据网格为学生记录创建一个 C wpf 应用程序 如何在标题中创建复选框以选择 取消选择一行中的所有复选框 如何一键选中行中的复选框以便我们可以编辑 删除记录 我们如何选择多个复选框来删除 我创建了一种行为 允许将控件中的属性绑定
  • 如何在 tsql contains 函数中搜索 &(与号)?

    我有一个表 T 其中有一个列 C 其中包含包含字符 的文本 但是如果我执行以下查询 它不会返回任何内容 尽管我可能有 10 行 SELECT FROM T WHERE Contains C a b 使用双引号使其成为搜索词 SELECT F
  • 从 Asm 访问 C 中定义的全局变量

    我有一个包含全局变量 foo 的 C 文件 我如何访问foo来自另一个汇编程序 我使用 i586 elf as GNU 汇编器 和 i586 elf gcc gnu 编译器 进行构建 您可以只使用交易品种名称 as将所有未定义的符号视为外部
  • EF Core DB First,以及如何避免模型生成时的构造函数覆盖

    我将不再对 Azure DB 使用 SQL 身份验证 而是使用 Active Directory 托管身份验证 如此处所述article 基本上 我正在做两件主要的事情来使其正常工作 1 在 DBContext 构造函数中注入令牌 publ
  • 在 Azure 上部署 Django 应用程序:即使在部署后也仅显示默认应用程序

    我正在尝试将 Web 应用程序部署到 Azure 我正在遵循这些指示https azure microsoft com en us documentation articles web sites python create deploy
  • 通过类路径执行 java -jar vs 在 jar 文件目录中执行 java -jar

    使用 NetBeans 创建 Java 程序后 将其称为 Addition 然后在文件夹 c Users Ben Doc NetBeansProjects Addition dist 中成功清理并构建可执行 Jar 文件 为什么在执行时 从
  • 使用ajax时如何清除缓存数据?

    我正在使用 Ajax 根据某些 ID 从服务器检索数据 如下所示 以执行自动建议功能 但是 当我提交表单并更新数据库时 自动建议字段假设不应再包含此 ID 的任何内容 但它仍会从缓存中检索数据 有谁知道如何清除缓存并使Ajax发送请求以在每
  • 如何使用 WatiN 检查 PDF 是否在浏览器中成功打开?

    我正在使用 WatiN 库在部署后对网站进行快速冒烟测试 除此之外 我想确保当我单击页面上的特定链接时 会在浏览器中打开 PDF 单击链接很容易 但如何检测 Acrobat Reader 是否已在浏览器窗口中成功打开 我想捕获 404 服务
  • /d2vzeroupper MSVC 编译器优化标志有什么作用?

    是什么 d2vzeroupperMSVC编译器优化标志在做什么 我正在阅读此编译器选项快速参考指南 对于 AMD 的 Epyc CPU https developer amd com wordpress media 2020 04 Comp
  • Android导入库

    在我的项目中 我需要使用外部库 该库包括 class文件 我已使用此库将文件夹添加到我的项目中属性 gt Java 构建路径 gt 库 gt 添加类文件夹 我可以毫无问题地编译项目 但是当我运行它时 我得到failed resolving
  • 使用 websocket 发送私人消息

    我们如何使用 Websockets 和 PHP 实现私人消息系统 客户端到客户端 据我了解 服务器广播消息 所有客户端都可以通过 connection onmessage 事件处理程序接收消息 我想知道是否有一种方法可以将消息仅发送给网络套
  • UWP DatagramSocket 多播

    我设法制作了一个简单的应用程序 可以从多播组发送和接收数据 如果我打开应用程序的 2 个实例 具有相同代码的 2 个不同的 sln 文件 我可以发送和接收数据 问题是 5秒后 如果我从Client001发送消息 只有Client001会收到
  • 什么时候可以将日期时间存储为本地时间而不是 UTC?

    这是一个类似于this one 我真的很想在我的应用程序中将日期时间存储为本地时间而不是 UTC 这被认为是最佳实践 在应用程序中 我发生了许多事件 每个事件都分配给给定的位置 当我向用户显示它们时 我总是想显示local活动时间 IE E