问题标签 [timespan]
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.
.net - .NET DateTime/TimeSpan 滴答声有多长?
.NET DateTime/TimeSpan 滴答声有多长?
c# - 处理负时间跨度
在我的网格输出中,我计算 aTimeSpan
并取其TotalHours
. 例如
目标是显示TotalHours
as 39:44
,所以我需要将值从 转换7.5
为07:30
。这没问题......除非它是负面的!
我可以创建一个TimeSpan
对象Hours
如果为负数,我无法将其转换为 aDateTime
以使用该.ToString("HH:mm")
方法,并且该TimeSpan
对象不支持格式字符串。
timespan - TimeSpan 到友好的字符串库 (C#)
有谁知道将 TimeSpan 对象转换为“友好”字符串的好库(或代码片段),例如:
- 两年三个月零四天
- 一星期零两天
(适用于文件到期系统,到期时间可能是几天到几十年不等)
澄清一下,假设我有一个 7 天的 TimeSpan,应该打印“1 周”、14 天“2 周”、366 天“1 年零 1 天”等。
objective-c - Objective-C 时间跨度
在 C# 中,如果我想将字符串解析为日期和时间跨度,我会执行类似以下的操作:
我的 Google-Fu 在找到将其转换为 Objective-C 的方法方面并不理想。
有什么建议么?
php - 处理时间跨度的最佳方式?
在 PHP 中是否有使用时间跨度的首选类或方法?我感兴趣的主要功能是检查日期是否在时间跨度内,或者为下限和上限生成时间戳。
c# - C#比较一天中两个时间的最佳方法
我想知道一天中的指定时间是否已过。我真的不喜欢我正在做的事情:
你好吗?
language-agnostic - TimeSpan 是不必要的吗?
编辑 2009 年 11 月 4 日
好的,所以自从我第一次发布这个问题以来已经有一段时间了。在我看来,许多最初的响应者并没有真正理解我在说什么——一个常见的反应是“你所说的没有任何意义”的一些变化——所以我做了一些方便图表来真正说明我的观点。
当我们谈到数字时,我们通常指的是小学生学习的点,称为数字线:
现在,当我们学习算术时,我们的大脑学会了对这个概念进行非常有趣的转换。评估表达式1 + 0.5
,例如,如果我们简单地应用我们的“数轴思维”,将需要我们以某种方式理解这一点:
很难真正说明这一点,因为很难想到:“添加”两点。这就是许多响应者为添加日期的想法而苦苦挣扎的地方(或者干脆认为这是荒谬的),因为他们将日期视为点。
然而,这个表达对我们来说1 + 0.5
确实有意义,因为当我们想到它时,我们真的在想象这个:
也就是说,数字(或点)1,加上向量0.5,得到点1.5。
或者,我们可能会这样想象:
即向量1,加上向量0.5,得到向量1.5。
换句话说,在处理数字时,我们可以互换地处理点和向量。但是日期呢?毕竟,日期基本上是数字。如果您不相信我,请将此行与上面的数字行进行比较:
注意到时间线和数轴之间的对应关系了吗?这是我的观点:如果我们用numbers执行上述转换,我们也应该能够用 date 来做。0001-Jan-02 00:00:00 + 0001-Jan-01 12:00:00
因此,正如许多响应者指出的那样,应用“时间线思维”,这种表达方式并没有多大意义:
但是,如果我们在头脑中进行与每次加减数字时相同的概念转换,我们可以轻松地“重新考虑”上述内容:
很明显,aDateTime
和 a之间TimeSpan
的差异与点和向量之间存在的差异相同。我认为导致很多人对我的建议做出负面反应的原因是,以这种方式将日期视为数量级是非常不自然的。但我不认同没有明显参考点可用作零的论点。有一个明显的参考点,我会给你一个提示:大约 2010 年前。
不要误会我的意思:我并不是在质疑在a和 a的概念之间划出概念鸿沟的有用性。真的,我的问题一直应该是(正如 ChrisW 间接建议的那样),为什么我们在处理常规数字类型时要互换处理数字和向量?(或者:为什么我们只有一种类型,而不是和?)有很大的不同,但直到初中或高中的某个时候,当我们开始几何时,我们才真正考虑过它。然后它被视为这个新的数学概念,而实际上,自从我们学会用手指数数来添加数字以来,我们就一直在使用它。DateTime
TimeSpan
int
int
intspan
最后,最好的答案来自 Strilanc,他指出使用DateTime
andTimeSpan
是仿射空间的一种实现,它具有不需要参考点作为原点的方便属性。所以谢谢,斯特兰克。然而,我将接受的答案交给 ChrisW,因为他是第一个提出向量和点概念的人,这确实触及了问题的症结所在。
原始问题(为后代)
我当然不是所有行业的编程专家,但我知道 PHP 和 .NETTimeSpan
除了一个DateTime
类(或 .NET 中的结构)之外还有一个类,我猜在各种其他语言和框架中都是这种情况以及(尽管我主要参考 .NET 结构来编写此内容)。这似乎是一个奇怪的问题,但不是TimeSpan
多余的吗?
如果您认为答案很明显(“ADateTime
是一个绝对时间点,而 aTimeSpan
是一个时间范围——就这么简单!”),请考虑一下:整数可以概念化为绝对值(点在数轴上)或值之间的距离——对于这些不同的概念化,我们不需要两种单独的数据类型。我仍然可以毫不含糊地写出 5 + 6 的意思。
只要有一个一致的零点引用,在我看来,就没有理由需要一个TimeSpan
对象来对对象执行算术运算DateTime
,或者获取它们之间的距离。
我错过了什么?为什么不能TimeSpan
简单地将结构的独特方法和属性折叠成DateTime
?
(免责声明:这不像我对这个或任何东西充满热情;我一直很好地使用DateTime
和TimeSpan
对象,因为它们一直都是预期的。我只是在问一个问题。)
编辑:好的,过度简化的例子来说明我的观点:
考虑等式 10 - 5 = 5。可以将其解读为“从 10(值)开始,将 5 向左移动(跨度),最终到 5(值)”。
假设,为了简单起见,我们将 1900 年 1 月 1 日设为零点,并且TimeSpan
仅以天为单位定义对象。
那么 10 - 5 = 5 可以理解DateTime
为 1900 年 1 月 11 日 - 1900 年 1 月 6 日 = 1900 年 1 月 6 日。这很好,因为根据我们的定义,1 月 11 日只是“10”,而 1 月 6 日是“5”。我们将 10 视为value,前 5 视为span,最后 5 再次视为value的事实仅仅是为了我们自己的概念利益。我的观点是这样的:唯一的区别在于你如何看待这个数字,而不是它实际上是什么。这就是为什么我们没有单独的结构,比如整数值和整数跨度——一个普通的旧整数覆盖了我们所有的基础。
我说得有道理吗?
datetime - 是否可以不使用 DateTime 类来测量可能跨越多个机器重启的时间跨度?
我有一个奇怪的问题。
我希望能够独立于系统日期时间来测量时间跨度。
我们基本上有一个系统,其中包含一个中央服务器和多个本地服务器,它们不断与中央服务器同步。
中央服务器上的对象仅在指定的时间段内有效,例如 2009 年 10 月 1 日 09:00 -> 2009 年 10 月 1 日 17:00。
对象可能会在其有效时间段前几个月下载到本地服务器。
当一个对象被下载到本地服务器时,它上面有一个属性,它定义了它生效之前的时间长度。
目前我只是从这个时间跨度计算它将在本地服务器上生效的日期时间,然后在这个时候在本地激活对象。
然而,整个设计存在缺陷,因为有人可以将他们的时钟提前到他们的本地服务器上,以过早地激活他们下载的对象。
是否没有可以在本地服务器上使用的固定参考点来测量时间跨度,这是无法更改的???像“ticksSinceProcessorInstallation”属性或类似的东西???
我知道我可以想出一些解决方案来轮询中央服务器以不断获取那里的时间,但理想情况下,本地服务器应该能够在最初从中央服务器下载对象后一直保持离线状态。
如果有人有任何有用的建议,我将非常感激,
谢谢
c# - 查找当前时间是否在时间范围内
使用 .NET 3.5
我想确定当前时间是否在一个时间范围内。
到目前为止,我有当前时间:
我正在讨论如何转换和比较时间范围。这行得通吗?
UPDATE1:感谢大家的建议。我不熟悉 TimeSpan 功能。
c# - 计算两个日期之间的月差
在 C#/.NETTimeSpan
中有TotalDays
,TotalMinutes
等,但我无法计算出总月差的公式。每月变化的天数和闰年不断让我失望。我怎样才能得到TotalMonths?
编辑抱歉没有更清楚:我知道我实际上无法从中得到这个,TimeSpan
但我认为使用TotalDays
andTotalMinutes
将是一个很好的例子来表达我正在寻找的东西......除了我试图获得 Total Months 。
示例:2009 年 12 月 25 日 - 2009 年 10 月 6 日 = 2 TotalMonths。10 月 6 日至 11 月 5 日等于 0 个月。11月6日,1个月。12月6日,2个月