【发布时间】:2014-12-20 12:12:24
【问题描述】:
我有两个日期第一个是nowDate {12/20/2014 5:19:31 PM},第二个是messageTime {12/20/2014 1:14:12 PM} 我想比较这些日期并计算结果并显示给用户,它计算现在时间和消息日期之间的时间差我的代码是
// Last Message Time
DateTime messageTime = Convert.ToDateTime(lastMessageTime);
int msgYear = messageTime.Year;
int msgMonth = messageTime.Month;
int msgDay = messageTime.Day;
int msgHour = messageTime.Hour;
int msgMinute = messageTime.Minute;
//Current Date Time
DateTime nowDate = DateTime.Now;
// TimeSpan difference = nowDate.Subtract(messageTime);
int nowYear = nowDate.Year;
int nowMonth = nowDate.Month;
int nowDay = nowDate.Day;
int nowHour = nowDate.Hour;
int nowMinute = nowDate.Minute;
if (msgYear == nowYear)
{
if (msgMonth == nowMonth)
{
if (msgDay == nowDay)
{
if (msgHour == nowHour)
{
if (msgMinute == nowMinute)
{
lastMessageTime = "Just Now";
}
else
{
if (nowMinute - msgMinute == 1)
lastMessageTime = "1 minute ago";
else
lastMessageTime = nowMinute - msgMinute + " minutes ago";
}
}
else
{
if (nowHour - msgHour == 1)
lastMessageTime = "1 hour ago";
else
lastMessageTime = nowHour - msgHour + " hours ago";
}
}
else
{
if (nowDay - msgDay == 1)
lastMessageTime = "1 Day ago";
else
lastMessageTime = nowDay - msgDay + " days ago";
}
}
else
{
if (nowMonth - msgMonth == 1)
lastMessageTime = "1 month ago";
else
lastMessageTime = nowMonth - msgMonth + " months ago";
}
}
else
{
if (nowYear - msgYear == 1)
lastMessageTime = "1 year ago";
else
lastMessageTime = nowYear - msgYear + " years ago";
}
但是这段代码有问题。假设最后一条消息时间是12/20/2014 05:59:31 PM,当前时间是12/20/2014 06:00:31 PM它显示结果为1 hour ago,但实际差异是1分钟左右,请帮助某人
【问题讨论】:
-
如果你减去两个日期,d1-d2,你会得到一个时间跨度,这就是你想要的。
-
.Net 允许您像数字一样对日期时间进行算术运算,但是,结果将是 TimeSpan 类型。然后,您可以通过其中一个属性找出总差异。不要重新发明轮子和过度设计。