ios / monotouch中与DateTime相关的问题

时间:2013-10-08 16:57:43

标签: ios xamarin.ios

我使用下面的代码来计算monotouch中通知的时间戳。 dateAdded参数是DateTime来自服务器的notificationDatetime,格式为UTC。 但是“时间”即TimeSpan is getting negative sometimes because dateAdded value is getting greater than DateTime.UtcNow`,这是错误的。那么,如何在monotouch中解决这个问题。

代码:

public static string GetTimeStamp (this DateTime dateAdded) { 
    TimeSpan time = DateTime.UtcNow - dateAdded;

    if (time.TotalDays > 7) 
        return string.Format ("on {0}", dateAdded.ToLocalTime ().ToString ("MMM dd, yyyy 'at' hh:mm tt")); 
    if (time.TotalHours > 24) 
        return string.Format ("about {0} day{1} ago", time.Days, time.Days == 1 ? "" : "s"); 
    if (time.TotalMinutes > 60) 
        return string.Format ("about {0} hour{1} ago", time.Hours, time.Hours == 1 ? "" : "s"); 
    if (time.TotalSeconds > 60) 
        return string.Format ("about {0} minute{1} ago", time.Minutes, time.Minutes == 1 ? "" : "s"); 
    else if (time.TotalSeconds > 10) 
        return string.Format ("about {0} second{1} ago", time.Seconds, time.Seconds == 1 ? "" : "s"); 
    else 
        return "a moment ago";
}

1 个答案:

答案 0 :(得分:0)

以下是一些要检查的事项。

  1. 设备上的DateTime.UtcNow是否正确?
  2. 是在UTC中真的添加了吗?
  3. 您的服务器日期和时间是否正确?
  4. dateAdded.Kind == DateTimeKind.Utc
  5. 我检查了DateTime.Subtract()-运算符的实现,所以(4)不应该有任何影响,因为它符合specification

      

    减法(DateTime,DateTime)方法不考虑该值   执行时的两个DateTime值的Kind属性的   减法。 [...]

    所以我怀疑是(2)和(3)的混合。

相关问题