相关疑难解决方法(0)

带有.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时这会增加.

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

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

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

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

我想有一个......

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

...此数据类型的类型方法,但没有.

所有你真的需要做的是在时间跨度对象上创建另一个属性给它上计算出的差异,那么上面可爱的字符串将是可计算很容易地和一个基准日.year.month会存在!

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

c# vb.net asp.net datetime timespan

24
推荐指数
4
解决办法
3万
查看次数

计算日,月,年

我如何准确计算日,月,年?

手段..

从1990年1月2日到2009年5月9日是..

xxx天,xxx个月,xxx年.

知道怎么做吗?

我试过Timespan和Tick()..两者都没有这样做..

c#

2
推荐指数
1
解决办法
1815
查看次数

计算年和月的天数?

如何计算c#中的年数和月数?每个例子:

如果1. days = 385然后我需要显示Year= 1.1(即1年1个月)2.days= 234然后我需要显示year =0.7(即0年7个月)

我们如何计算c#?

我做了days=234 /365,结果是0.64(即0年6个月).但实际上是7个月.

如何获得准确的年份和月份.

c# calendar

2
推荐指数
1
解决办法
4213
查看次数

C#获取两个DateTime日期之间的差异

所以我正在开发这个具有日期功能的小应用程序(显示日,月,年等的差异)现在做"选定日期是14151天,465个月和39年前"这样的事情很容易,但怎么能我是以可读的格式("15天,7个月和39年前")说出来的?

现在要做到这一点,我已经设定了多年来的差异

int years = selectedDate.Year - currentDate.Year
Run Code Online (Sandbox Code Playgroud)

几个月和几天相同.然而,这几乎没有用,特别是当前进一个月时(因为它可能会说15天和1个月因为date1.Day - date2.Day = 15,而实际上可能是8天.我认为这是因为日期的工作方式与几个月的东西,但我不确定.

无论如何,我希望我有任何意义,因为我甚至无法真正跟踪自己.任何想法都非常感谢.:d

c# datetime date visual-studio-2010

1
推荐指数
1
解决办法
1586
查看次数

如何将天数转换为年,月和日

如果我有两个约会,那么我会在几天内得到它们之间的区别像这篇文章.


如何在以下视图中详细说明:

将日期转换为(number of years,number of months and the rest in the number of days)

.net c# asp.net datetime date

-3
推荐指数
2
解决办法
5万
查看次数

标签 统计

c# ×5

datetime ×3

asp.net ×2

date ×2

.net ×1

calendar ×1

timespan ×1

vb.net ×1

visual-studio-2010 ×1