c# - 像 facebook 一样格式化时间

标签 c# datetime formatting

任何人都知道如何格式化给定的时间跨度以像 facebook 那样格式化?

30 秒前,大约一个小时前,昨天晚上 8:37 等等......

谢谢!

最佳答案

查看 this 的答案问题。以前做过。

下面的代码是复制上述问题的答案。

const int SECOND = 1;
const int MINUTE = 60 * SECOND;
const int HOUR = 60 * MINUTE;
const int DAY = 24 * HOUR;
const int MONTH = 30 * DAY;

if (delta < 0)
{
  return "not yet";
}
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";
}

关于c# - 像 facebook 一样格式化时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6449319/

相关文章:

c# - 为什么 C# (.NET Core 3) 不能为 MemoryExtensions.IndexOf 选择正确的重载?

c# - DateTime.ParseExact 给出错误 : String was not recognized as a valid DateTime

javascript - 当 javascript 中没有 "T"的格式时,将 YouTube API 持续时间(格式中的 ISO 8601 持续时间)转换为 h :m:s ,

c - 如何有效地将多个参数与要在 C 中打印的字符串连接起来?

python - 从 Python 日期中提取两位数的月份和日期

Java:浮点格式取决于语言环境

c# - 我如何测试与 NUnit 的契约(Contract)?

c# - 将动态 C# 对象序列化为 JSON

c# - 如何将 boolean 值绑定(bind)到组合框

Scala 将 DateTime 值转换为时间戳