问题标签 [datetimeoffset]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 夏令时更改后的 DateTimeOffset 显示
我有一个关于 DateTimeOffset 和夏令时的问题。为了解释我的问题,假设现在日期和时间是:
如果我运行此代码:
然后我得到这个结果:
当地时间:11/6/2010 10:15:00 AM
这意味着事件发生在早上 10:15(我的时区是山区夏令时(-6 偏移))。
所以,然后我将此 DateTimeOffset 保存到我的 SQL Server 2008 db(作为 DateTimeOffset)。第二天我想向用户展示它。但是现在夏令时已经过期了。
如果我使用保存的关闭值(从前一天)运行上面的 WriteLine,会显示什么?
存储在数据库中的偏移量是-6。但是现在夏令时结束了,当前的偏移量是 -7。因此,据我了解文档,它将首先将我的时间转换为 UTC 时间(因此需要上午 10:15 并增加 6 小时(下午 4:15)。然后它将减去本地时间的当前偏移量(4:15下午 - 7 = 上午 9:15)。
因此,如果我的数学是正确的,那么现在当我显示我的事件时,它将显示它发生在上午 9:15 而不是上午 10:15。
情况不妙。我想存储时区信息,但我需要我的时间在同一个时区保持不变。(这意味着如果事件发生在犹他州的上午 10:15,那么下次我查看它(在犹他州)时,我需要看到它是在上午 10:15,无论夏令时是否发生了变化.
我想我不是第一个遇到这个问题的人。其他人会做什么来解决这个问题?(或者我的事实有误?)
datetime - 将 DateTime.MinValue 转换为 DateTimeOffset
我正在尝试将 DateTime.MinValue 转换为 DateTimeOffset 值,但出现 ArgumentOutOfRange 异常。
我正在查看有关 DateTime 到 DateTimeOffset 的隐式转换的 MSDN 文章,异常部分指出我将在以下时间收到此 ArgumentOutOfRange 异常;
... 应用偏移产生的协调世界时 (UTC) 日期和时间早于 MinValue。...
那么为什么下面的代码会抛出异常;
仅仅是因为我的时区吗?我在 GMT +8,但我对上述代码的理解是,测试是使用未指定类型创建的。
我通过简单地测试我的 DateTime 的 MinValue 来解决这个问题,如果是这样,那么使用 DateTimeOffset.MinValue 代替。
我只是好奇为什么我的未指定种类的 DateTime 对象会导致错误。
datetime - 我是否需要获取客户的实际时区,或者我可以假设它们都在 EST 时区?(仅限美国的网络应用程序)
我有一个关于在我的 Web 应用程序中处理日期和时间的问题。该应用程序将出售每月订阅。它仅显示客户购买和取消订阅的日期。客户可以在月中购买额外的服务。应用程序计算按比例向客户收费,直到他的周年纪念日为止。
我将在 UTC 中存储日期/时间。它仅适用于美国客户。
我正在考虑以下选项,我很想从更有经验的开发人员那里获得反馈:
1 - 总是在 EST 中显示日期。我可以包含一个小标题,说明所有订阅都使用 EST。这很简单,因为我不必处理客户的时区。但是,我不确定客户是否会因此而推迟。有什么想法吗?
2 - 始终在 EDT 中显示日期。这可能不会很好地工作,因为很难解释使用它的原因。但是我相信它会比 EST 更容易处理。
3 - 在客户注册服务并使用该信息时询问客户的时区信息。我认为这不会增加太多复杂性,但是我必须为他们提供更改时区的选项,并且我必须决定在时区发生更改时如何处理现有订阅。如果我选择这个选项,我会要求客户从下拉列表中选择时区。
4 - 询问客户的位置(城市和州)并自己计算时区。
5 - 尝试根据客户的 IP 或其他方法(想法???)猜测客户的时区。
选项 3、4 和 5 可能是最用户友好的。选项 1 似乎是最容易实现的。
对不起,很长的帖子。如果您花时间阅读它,您会介意多花一点时间并分享您的想法和经验吗?
谢谢你。
更新 1 - 2011 年 9 月 3 日 - 17:08 MST
刚刚发现 PayPal 使用 PDT 记录交易,并使用他们在注册 PayPal 时设置的客户本地时区显示给客户。
我现在倾向于:
1 - 使用 PDT 显示当前日期(与 PayPal 保持一致) - 我可能会更改代码以显示日期和时间 PDT。目前我只显示日期。我相信如果我也显示时间,客户会更清楚。
2 - 我不会显示周年纪念日。我会让 PayPal 处理。我将简单地说明这是按月计费。
3 - 当客户添加新服务时,我将使用 PDT 计算按比例计算,我会给他们三天的宽限期以解决时区差异(感谢下面的 Robert Levy 的建议)和 PayPal 处理(我不如果他们距离正常的每月费用只有几天的时间,则希望按比例向他们收取费用)。
有什么想法吗?
更新 2 - 2011 年 9 月 3 日 - 21:01 MST
只是快速更新。经过进一步研究,我发现 PayPal 确实向我发送了交易日期。在客户通过 PayPal 付款并且我收到确认信息之前,我不会显示任何日期。我会在客户的收据上显示 PayPal 的交易日期。
听起来像是个计划。你怎么看?
c# - DateTimeOffset 如何处理夏令时?
我将计划存储在数据库中作为一周中的一天、小时和分钟。读取数据时,我们DateTime
为下一次出现的那一天、小时和分钟创建一个对象,但我需要修改它以支持 DST。如有必要,我可以修改数据库。
我知道DateTimeOffset
存储 UTC 日期/时间和偏移量。我也从这个 MSDN 博客条目中知道DateTimeOffset
应该用于“使用夏令时”。
我正在努力理解的是DateTimeOffset
“夏令时如何工作”。我的理解是,夏令时是一个政治决定,不能从纯粹的抵消中推断出来。如果这个结构只存储一个偏移量而不是一个命名的时区或国家,它怎么可能对 DST 友好呢?
php - 用 PHP 减去 1 天
我正在尝试从我的 Drupal CMS 中获取一个日期对象,减去一天并打印出两个日期。这就是我所拥有的
所以我不明白为什么原来的日期对象很好,但是我试图创建一个额外的日期对象并通过减去一天来修改它,似乎我不能这样做。输出总是空白。
ruby-on-rails - 带时区的Strptime
我有一个字符串,我用DateTime.strptime
. 字符串中日期的时区是 CET,但 Ruby 创建了一个 UTC DateTime 对象,该对象当然有 2 小时的偏移量。
目前我正在解决这个问题,DateTime.strptime().change(:offset => "+0020")
但我很确定这不是它的工作方式。
有人可以启发我正确的方法吗?
datetime - 带偏移量的 SQLite 格式日期时间
我只想从 sqlite3 中的日期时间列返回日期。问题是我必须有偏移量。该列名为 ClientCreatedDate,值为2011-10-24 20:53:15 +0000
通常,如果值看起来像这样2011-10-24 20:53:15
,我会这样做:
一切都会很好。
有什么我可以做的,因为我有偏移量?
php - PHP Doesn't Display UTC Z TimeZone Designator
When I try to format a date to UTC, It doesn't show the 'z' for the UTC zero timezone designator. Is this a problem with the library?
The Results looks like:
Notice that none of the formats have z. I would have expected
sql-server-2008 - SSIS格式日期YYYYMMDD,日期偏移为X天?
下面的评估将给我一个日期设置为格式 yyyymmdd 作为 int。
我需要做的是在 SSIS 中将日期偏移 X 天并相应地保持月份和年份的偏移量。
我似乎找不到答案。每个人都有一个关于如何格式化它的示例,但如果您需要在几天、几个月或几年内使用偏移量格式化它,同时保持所有部分的准确性,该怎么办。
任何人?
在 C# 或 TSQL 中,这很容易,但是这个 SSIS 让我越来越耐心。
谢谢。
c# - 在 WCF 服务中捕获客户端 Datetimeoffset
我有一个网络服务,可以保存来自世界各地用户的一些事件。用户稍后可以登录到报告系统并查看他们的事件。我需要在他们的当地时间显示事件时间戳。
我可以使用后面的DateTimeOffset
db 字段。但我对如何在网络服务上转换它感到困惑。当客户端调用我的 web 服务事件方法时,他们需要发送 datetime 参数,因为实际事件的时间可能与服务接收到的时间不同。sql server 2008
WCF service
如果我尝试在服务器上将其转换为DateTimeOffset dtOffset = eventTime;
,它将根据服务器的时间进行转换。
我怎样才能以正确的方式做到这一点?