計算C#中的相對時間給出一個特定的DateTime值,如何顯示相對時間,例如:2小時前三天前一個月前
3 回答

紫衣仙女
TA貢獻1839條經驗 獲得超15個贊
const int SECOND = 1;const int MINUTE = 60 * SECOND;const int HOUR = 60 * MINUTE;const int DAY = 24 * HOUR;const int MONTH = 30 * DAY; var ts = new TimeSpan(DateTime.UtcNow.Ticks - yourDate.Ticks);double delta = Math.Abs(ts.TotalSeconds);if (delta < 1 * MINUTE) return ts.Seconds == 1 ? "one second ago" : ts.Seconds + " seconds ago";if (delta < 2 * MINUTE) return "a minute ago";if (delta < 45 * MINUTE) return ts.Minutes + " minutes ago";if (delta < 90 * MINUTE) return "an hour ago";if (delta < 24 * HOUR) return ts.Hours + " hours ago";if (delta < 48 * HOUR) return "yesterday";if (delta < 30 * DAY) return ts.Days + " days ago";if (delta < 12 * MONTH){ int months = Convert.ToInt32(Math.Floor((double)ts.Days / 30)); return months <= 1 ? "one month ago" : months + " months ago";}else{ int years = Convert.ToInt32(Math.Floor((double)ts.Days / 365)); return years <= 1 ? "one year ago" : years + " years ago";}

開滿天機
TA貢獻1786條經驗 獲得超13個贊
我就是這樣做的
var?ts?=?new?TimeSpan(DateTime.UtcNow.Ticks?-?dt.Ticks);double?delta?=?Math.Abs(ts.TotalSeconds);if?(delta?<?60){ ??return?ts.Seconds?==?1???"one?second?ago"?:?ts.Seconds?+?"?seconds?ago";}if?(delta?<?120){ ??return?"a?minute?ago";}if?(delta?<?2700)?//?45?*?60{ ??return?ts.Minutes?+?"?minutes?ago";}if?(delta?<?5400)?//?90?*?60{ ??return?"an?hour?ago";}if?(delta?<?86400)?//?24?*?60?*?60{ ??return?ts.Hours?+?"?hours?ago";}if?(delta?<?172800)?//?48?*?60?*?60{ ??return?"yesterday";}if?(delta?<?2592000)?//?30?*?24?*?60?*?60{ ??return?ts.Days?+?"?days?ago";}if?(delta?<?31104000)?//?12?*?30?*?24?*?60?*?60{ ??int?months?=?Convert.ToInt32(Math.Floor((double)ts.Days?/?30)); ??return?months?<=?1???"one?month?ago"?:?months?+?"?months?ago";}int?years?=?Convert.ToInt32(Math.Floor((double)ts.Days?/?365)); ??return?years?<=?1???"one?year?ago"?:?years?+?"?years?ago";
- 3 回答
- 0 關注
- 691 瀏覽
添加回答
舉報
0/150
提交
取消