C# 如何在.NET中获取两天之间的差异
我想查找员工的服务期限,我已经从数据库中获取了员工加入日期,就像这样 离职日期:2007/03/24 现在我需要找出系统日期和加入日期之间的差异,如果有人能对此有所了解,请帮助我,谢谢 我为得到答案而编写的示例代码,但它不能正常工作C# 如何在.NET中获取两天之间的差异,c#,.net,datetime,C#,.net,Datetime,我想查找员工的服务期限,我已经从数据库中获取了员工加入日期,就像这样 离职日期:2007/03/24 现在我需要找出系统日期和加入日期之间的差异,如果有人能对此有所了解,请帮助我,谢谢 我为得到答案而编写的示例代码,但它不能正常工作 public TimeSpan periodOfService { get { //DateOfJoin-->which i get from my database
public TimeSpan periodOfService
{
get
{
//DateOfJoin-->which i get from my database
DateTime JoinDate = Convert.ToDateTime(DateOfJoin);
DateTime TodayData = DateTime.Now;
TimeSpan servicePeriod = JoinDate - TodayData;
return servicePeriod;
}
}
输出格式->2年3个月如何在Asp.net MVC 4中执行此操作?首先,交换日期 您想从
今天的数据中减去JoinDate
(同时修改拼写和命名约定):
不幸的是,以您喜欢的格式输出这个TimeSpan
值比您最初想象的要复杂得多,请参阅下面的文章了解如何实现这一点:
我建议您仔细阅读它建议的解决方案,然后研究如何使用该方法:
public DateSpan(DateTime startDate, DateTime endDate)
您可以获得总日差,并将其转换为月份和年份
这里有一个简单的例子
TimeSpan servicePeriod = TodayData - JoinDate;
string result = string.Format("{0} Years, {1} Months, {2} Days", servicePeriod.TotalDays / 365, servicePeriod.TotalDays / 30, servicePeriod.TotalDays);
您可以返回一个非时间跨度的字符串通常,您将使用时间跨度
来表示到日期之间的差异,但您需要将差异显示为年和月,这使得时间跨度
不合适。相反,您可以创建一个类来表示差异:
class DateDifference {
public DateDifference(Int32 years, Int32 months) {
Years = years;
Months = months;
}
public Int32 Years { get; private set; }
public Int32 Months { get; private set; }
}
您可以使用简单的算术计算两个日期之间的差值:
DateDifference GetDateDifference(DateTime first, DateTime second) {
if (second < first)
throw new ArgumentOutOfRangeException("second", "The second date cannot occur before the first.");
var years = second.Year - first.Year;
var months = second.Month - first.Month;
if (second.Month < first.Month) {
years -= 1;
months += 12;
}
return new DateDifference(years, months);
}
这会让你知道这两个日期之间的差异,不管是在未来还是过去。
如果是无效日期,则返回零范围
public TimeSpan periodOfService
{
get
{
DateTime JoinDate;
if (DateTime.TryParse(DateOfJoin, out JoinDate))
{
return DateTime.Now > JoinDate ? DateTime.Now - JoinDate : JoinDate - DateTime.Now;
}
return TimeSpan.Zero;
}
}
您的代码似乎已经为您计算了时间跨度。如果返回的时间跨度不正确,您是否检查了系统日期(从中减去),实际上是吗?他的时间跨度是不正确的,因为日期是错误的。这与MVC有什么关系?+1对于问题OP。到目前为止,你已经明确了自己的目标并展示了自己的尝试,我不确定你为什么会在这里获得否决票。这没有考虑闰年。假设所有年份都有365天。这也会将366天输出为“1年,12个月,366天”,而不是“1年,0个月,1天”。。。
var dateDifference = GetDateDifference(JoinDate, TodayDate);
public TimeSpan periodOfService
{
get
{
DateTime JoinDate;
if (DateTime.TryParse(DateOfJoin, out JoinDate))
{
return DateTime.Now > JoinDate ? DateTime.Now - JoinDate : JoinDate - DateTime.Now;
}
return TimeSpan.Zero;
}
}