亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

計算C#中的相對時間

計算C#中的相對時間

FFIVE 2019-05-30 16:13:57
計算C#中的相對時間給出一個特定的DateTime值,如何顯示相對時間,例如:2小時前三天前一個月前
查看完整描述

3 回答

?
紫衣仙女

TA貢獻1839條經驗 獲得超15個贊

你的代碼使用常量(如CodeComplete中的建議)是很好的,但可能更清楚。

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";}


查看完整回答
反對 回復 2019-05-30
?
開滿天機

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";


查看完整回答
反對 回復 2019-05-30
  • 3 回答
  • 0 關注
  • 691 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號