问题标签 [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.

0 投票
4 回答
1110 浏览

c# - 如果我只有时间作为字符串,例如 09:00 AM,如何将偏移量作为 TimeSpan

我有字符串“9:00 AM”。我想将午夜的偏移量作为 C# 中的 TimeSpan 吗?

0 投票
2 回答
349 浏览

c# - 使用 FluidKit 时如何加快动画速度?

我在 WPF 应用程序中使用FluidKit并希望加快动画速度。

它有一个“持续时间”属性,它的类型为持续时间,它需要一个时间跨度,但我给它的任何时间跨度都只会导致没有动画。

如何设置持续时间来控制动画的速度?

(如果有人正在寻找这个问题的答案,我也在codeplex 论坛上发布了它。)

0 投票
2 回答
170 浏览

datetime - 有没有一种方法可以存储和操作考虑月份长度、闰年等的时间跨度?

我正要自己写这个,但我知道它必须存在,我只是设法避免所有会引导我的谷歌关键字。

我会寻找像 DDDMMMYYY 这样的东西,其中 D、M、Y 是天数、月数和年数。所以 00103000 表示跨度为三个月零一天,或者 000000001 表示跨度为一年。理想情况下,这种格式还有一个标准的应用方式,可以考虑到时间跨度计算的所有缺陷,比如一个月内不同的天数、闰年等。

我不是在寻找一种方法来计算两个已知时间戳之间的时间跨度,正如这里所问的那样(在 C# 中计算相对时间),我正在寻找类似于我可以存储的特定字符串格式的东西,它可以指示时间跨度用于从已知日期确定第二个未知日期。

例如,使用我上面的虚构格式:如果我说“从 2009 年 9 月 15 日开始计算 00103000 的日期”将返回“2009 年 12 月 16 日”,即 9 月 15 日之后的三个月零一天。

0 投票
6 回答
49204 浏览

c# - TimeSpan.Parse 时间格式 hhmmss

在 c# 中,我有时间在 12:45:10 的格式 hhmmss 中,例如 124510,我需要知道 TotalSeconds。我使用了 TimeSpan.Parse("12:45:10").ToTalSeconds 但它不采用 hhmmss 格式。有什么好方法可以转换吗?

0 投票
4 回答
11822 浏览

c# - C# - Difference between two dates?

I am trying to calculate the difference between two dates. This is what I'm currently using:

All works fine except it is a day off. I am assuming this is because it does not count anything less than 24 hours a complete day. Is there a way to get it to do so? Thank you.

0 投票
3 回答
8549 浏览

oracle - 在 Oracle 9i 中获取两个日期之间的时间跨度的方法是什么

在 Oracle 9i 中,获取包括时间在内的两个日期之间的差异的最佳方法是什么?类似于 C# 中的 Timespan 函数。

谢谢,查克

0 投票
3 回答
4394 浏览

vb.net - TimeSpan 减法返回负数 TImeSpan

这两个 TimeSpan 以 24 小时格式存储在数据库中。没有日期,只有时间跨度。

'r = -12:17:05

是否有任何 TimeSpan 方法可以做到这一点?谢谢你。

0 投票
8 回答
69468 浏览

c# - 减去 2 个日期时间字段以获得剩余天数

如果有人能帮我找出减去 2 个日期时间字段以获得剩余天数的差异,将不胜感激。

0 投票
8 回答
39936 浏览

c# - 具有 .Years 和 .Months 的真实时间跨度对象

考虑以下 2 个场景:场景 1)。今天是 2012 年 5 月 1 日,场景 2)。今天是 2012 年 9 月 1 日。

现在,考虑我们在网页上写下关于某人留下的评论的以下内容:“此评论是在 3 个月零 12 天前写的”。即使陈述完全相同,这两种情况下的天数也总是不同的。在场景 1 中,“3 个月零 12 天”等于102 days。但是,在场景 2 中,“3 个月零 12 天”将是104 days

现在,为了说明我的观点,让我们使用一个不同的例子,假设有人在 2013 年 1 月 30 日在我们的网站上发表了评论,而今天是 2013 年 3 月 10 日。我们的真实 TimeSpan 对象需要知道这个相对日期,并且可以计算出以下内容:

  • 三月有10天,
  • 1 月有 1 天(从 30 日到 31 日)。
  • 二月是一个月,不管它有多少天(即使它是 28 天)。

因此,这意味着 10 天 + 1 天 + 1 个月总计,转换为This comment was posted 1 Month and 11 Days ago.

现在,如果您使用 MS 样式的 TimeSpan 对象(或任何语言的任何 TimeSpan 对象),它将为您提供从 1 月 30 日到 3 月 10 日(39 天)的天数,并且因为 TimeSpan 对象不存储相对日期(我们减去的基本/初始日期以获得 TimeSpan),如果你问它有多少个月和多少天,它会假设一个月有 30 天,甚至最坏,平均值大于 30 天, 并在几天内返回其余的,所以要达到 39 天,它会告诉你已经 1 个月零 9 天,你会得到This comment was posted 1 Month and 9 Days ago信息。请记住,这两种情况都有相同的开始日期和相同的当前/结束日期,是的,Microsoft TimeSpan 对象不允许我们告诉它应该考虑 2013 年 2 月的月份,它给了我们一个完全不同的 TimeSpan,相差一个整2天。实际上,它对我们撒了谎。

问题是,人们会相信这一点,谁知道他们可能有什么看法,他们对过去的看法可能会如何改变,以及他们在试图在自己的脑海中重建过去的事件时可能做出的决定和生活选择,而从来没有注意到或理解代表时间的缺点和固有的失败,这在今天无处不在。他们不会明白编程语言没有意识到(或关心)上个月有 31 天,与 30、29 或 28 天相反——反之亦然,当你增加 TimeSpan 时,这会增加。

这是这篇文章的核心问题。我知道大多数人不会关心这种差异(但请确保我们中的一些人会关心,并且不能把它放在我们的背上),如果这不打扰你,那没关系。我希望它不会打扰我,我会为自己节省一些时间、压力和失望。如果这不麻烦,您可以使用该功能来有效地以文本显示相对时间(可自定义为从秒到年的 1 到 6 个节点),而不是使用它来提供通常可以忽略不计的精度。

令我失望的是,我注意到没有真正的时间跨度对象,如果你得到一个时间跨度,然后做一个,.years否则.months你什么也得不到,你只会得到.days和降低,因为时间跨度对象没有任何东西告诉它哪个月或创建 timeSpan 的年份。因此,它永远不会真正知道它有多少个月,因为每个月的天数在一年内甚至在闰年都不同。

作为对此的回应,我将发布一个我开发的函数,以便获得准确的读数并能够在我的 ASP.NET 网页上返回如下内容...

发表于 4 年 3 个月 14 天 15 小时 18 分 24 秒前

我以为会有一个…

timeSpan.GetActualNumberOf[Months/Days/Hours/etc](当然必须提供基准日期)

......这个数据类型的类型方法,但没有。

您真正需要做的就是在 timeSpan 对象上创建另一个属性,为其提供计算差异的基准日期,然后上面可爱的字符串将很容易计算,并且.year&.month将存在!

更新:我在下面的答案中显着扩展和更新了我的官方答案和代码使用细节,100% 工作答案和代码(完整),准确和准确的相对时间/日期,没有近似值 - 谢谢。

0 投票
4 回答
8805 浏览

c# - 人类可读的日期格式

您可能已经注意到,某些 Web 应用程序(例如,GMail 的某些部分)以比简单的 DD/MM/YYYY 更易于阅读的格式显示日期。

例如,如果我从 23 日(在撰写本文时恰好是 3 天前)打开一个邮件项目,我将得到以下信息:

12 月 23 日(3 天前)

我想在我自己的 Web 应用程序中实现与此类似的逻辑。

例如,在处理 .NET TimeSpan 对象时,我想将其转换为如下文本:

2个月

3天

是否已经有一个 .NET 库能够做到这一点?

如果不是,我可能会构建一些基本的东西并将其开源。


我在这里做了一个基本的开始: