Tag: timespan

创建倒计时到目前为止C#

我想创建一个Windows窗体应用程序,它只显示一个计时器: xx天xx小时xx分钟xx秒 没有设置计时器或任何东西的选项,我想在代码中这样做但是,问题是我希望它从当前时间(DateTime.Now)倒计时到特定日期。 所以我最终得到的时间是TimeSpan类型。 我现在怀疑如何实际显示这个,所以它实际上正在工作,并且更新(倒计时)似乎无法找到帮助我的教程,所以我希望我可以在这里得到一些帮助:)

Datetime.now作为TimeSpan值?

我需要当前的Datetime减去myDate1以秒为单位。 DateTime myDate1 = new DateTime(1970, 1, 9, 0, 0, 00); DateTime myDate2 = DateTime.Now; TimeSpan myDateResult = new TimeSpan(); myDateResult = myDate2 – myDate1; 。 。 我尝试了不同的计算方法但没有效果。 TimeSpan mySpan = new TimeSpan(myDate2.Day, myDate2.Hour, myDate2.Minute, myDate2.Second); 。 它的计算方式并不重要,输出应该只是这些值与秒的差值。

TimeSpan FromMilliseconds奇怪的实现?

我最近在.net timespan实现中遇到了一些奇怪的行为。 TimeSpan test = TimeSpan.FromMilliseconds(0.5); double ms = test.TotalMilliseconds; // Returns 0 FromMilliseconds采用double作为参数。 但是,似乎内部的值是四舍五入的。 如果我使用5000个滴答(.5毫秒)实例化新的时间跨度,则TotalMilliseconds的值是正确的。 查看reflection器中的TimeSpan实现会发现输入实际上已经转换为long。 为什么Microsoft将FromMilliseconds方法设计为使用double参数而不是long(因为在实现时,double值是无用的)?

如何将12小时时间字符串转换为C#TimeSpan?

当用户填写表单时,他们使用下拉列表表示他们希望安排测试的时间。 此下拉列表包含12小时上午/下午表格中15分钟增量的一天中的所有时间。 因此,例如,如果用户选择下午4:15,则服务器将字符串”4:15 PM”发送到具有表单提交的Web服务器。 我需要一些如何将此字符串转换为Timespan,因此我可以将其存储在我的数据库的时间字段中(使用linq to sql)。 有人知道将AM / PM时间字符串转换为时间跨度的好方法吗?

TimeSpan.Parse时间格式hhmmss

在c#我有时间格式hhmmss喜欢124510 12:45:10我需要知道TotalSeconds。 我使用了TimeSpan.Parse(“12:45:10”)。ToTalSeconds但它不采用格式hhmmss。 转换它的任何好方法?

为什么我的TimeSpan.Add()不工作?

必须有一个简单的答案: var totalTime = TimeSpan.Zero; foreach (var timesheet in timeSheets) { //assume “time” is a correct, positive TimeSpan var time = timesheet.EndTime – timesheet.StartTime; totalTime.Add(time); } 列表timeSheets只有一个值,它是一个正的TimeSpan (在本地检查中validation)。

为什么TimeSpan.ToString()需要转义分隔符?

您可以为DateTime对象指定自定义格式,如下所示: DateTime.Now.ToString(“HH:mm:ss”); // 19:55:23 但是当我尝试对TimeSpan对象使用相同的格式时,如下所示: DateTime.Now.TimeOfDay.ToString(“HH:mm:ss”); 我得到”Input string was not in a correct format.” 例外。 事实certificate,解决方案是你需要转义’:’字符,如”HH\\:mm\\:ss” 。 请注意,有一个双反斜杠,因为如果只指定一个,它将破坏字符串,因此您也需要转义该字符串。 问题是,为什么.NET Framework开发人员会这样做? 必须有一个合理的理由。 为什么我们不能使用自定义格式说明符而不像我们使用DateTime对象那样转义它们? 寻找.NET专家来阐明这个主题。

带有.Years和.Months的Real Timespan对象

请考虑以下两种情况:场景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日)。 2月是一个月,不管它有多少天(即使它是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时这会增加。 这是本文的核心问题。 我知道大多数人都不会关心这种差异(但要确保我们有些人这样做,并且不能在我们背上这样做),如果这不打扰你,那没关系。 我希望它不会打扰我,我会节省一些时间,压力和失望。 如果这不是一个麻烦,您可以使用该function有效地文本显示相对时间(可定制为从几秒到几年的1到6个节点),而不是使用它提供的通常可忽略的精度。 令我失望的是,我注意到没有真正的时间跨度对象,如果你得到一个时间跨度,做一个.years或.months你什么也得不到,你只会得到.days和更低,因为timeSpan对象不携带什么都可以告诉它创建时间的是哪个月或哪一年。 因此,它永远不会真正知道自每个月的日子在一年内变化多少个月,甚至超过闰年。 为此,我将发布一个我开发的函数,以获得准确的读数,并能够在我的ASP.NET网页上返回如下内容… 发表于4年,3个月,14天,15小时,18分钟和24秒之前 我想有一个…… timeSpan.GetActualNumberOf[Months/Days/Hours/etc] […]

时间跨度格式化

你如何优雅地格式化时间跨度,例如“1小时10分钟”,当你宣布它时: TimeSpan t = new TimeSpan(0, 70, 0); ? 我当然知道你可以为此做一些简单的数学运算,但我有点希望.NET中有一些东西可以帮我处理这个问题 – 对于更复杂的场景 重复 如何String.Format在.NET中使用自定义格式的TimeSpan对象?

如何将字符串“07:35”(HH:MM)转换为TimeSpan

我想知道是否有办法将24小时时间格式的字符串转换为TimeSpan。 现在我有一个“旧时尚风格”: string stringTime = “07:35”; string[] values = stringTime.Split(‘:’); TimeSpan ts = new TimeSpan(values[0], values[1], 0);