首页 > C# > 在 C 语言中计算相对时间DateTime

在 C 语言中计算相对时间DateTime

上一篇 下一篇

给定一个特定的值,如何显示相对时间,例如:DateTime

  • 2 hours ago
  • 3 days ago
  • a month ago

分割线

网友回答:

jquery.timeago插件

Jeff,因为 Stack Overflow 广泛使用 jQuery,所以我推荐 jquery.timeago 插件。

好处:

  • 避免使用日期为“1 分钟前”的时间戳,即使页面是在 10 分钟前打开的;时间自动刷新。
  • 您可以在 Web 应用程序中充分利用页面和/或片段缓存,因为时间戳不是在服务器上计算的。
  • 你可以像酷孩子一样使用微格式。

只需将其附加到 DOM 上的时间戳即可:

jQuery(document).ready(function() {
    jQuery('abbr.timeago').timeago();
});

这将在标题中转换具有 timeago 类和 ISO 8601 时间戳的所有元素:abbr

<abbr class="timeago" title="2008-07-17T09:24:17Z">July 17, 2008</abbr>

变成这样的东西:

<abbr class="timeago" title="July 17, 2008">4 months ago</abbr>

产量:4个月前。随着时间的流逝,时间戳将自动更新。

免责声明:我写了这个插件,所以我有偏见。
分割线

网友回答:

Jeff,你的代码很好,但使用常量可以更清晰(如代码完成中建议的那样)。

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

分割线

网友回答:

这是我的做法

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 < 60 * 2)
{
  return "a minute ago";
}
if (delta < 45 * 60)
{
  return ts.Minutes + " minutes ago";
}
if (delta < 90 * 60)
{
  return "an hour ago";
}
if (delta < 24 * 60 * 60)
{
  return ts.Hours + " hours ago";
}
if (delta < 48 * 60 * 60)
{
  return "yesterday";
}
if (delta < 30 * 24 * 60 * 60)
{
  return ts.Days + " days ago";
}
if (delta < 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";

模板简介:该模板名称为【在 C 语言中计算相对时间DateTime】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【C#】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 215次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 02-10
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
响应式 微信素材 企业网站 单页式简历模板 微信公众平台 html5 微信文章 自适应 微信模板 微信图片
您可能会喜欢的其他模板