将2010-04-16 16:30:00转换为“明天下午”,或将另一个日期转换为“今天下午”、“明年”、“下周星期三”。你就明白了。有人知道有PHP或Javascript库可以做到这一点吗?
发布于 2010-04-15 14:16:24
我认为你可以用这里说的话走很长一段路:Calculate relative time in C#
逻辑就在那里,如果一种不同语言的解决方案适合您,那么做与javascript等效的代码也不是太难。
发布于 2010-04-15 14:17:53
可能有更优雅的解决方案(寻找自然语言格式),但我个人找不到任何解决方案。
我建议使用阈值来计算从now到您要格式化的日期的距离。
伪解:
diff = now - date
if (diff < one_day)
format for today
if (diff < two_days)
format for tomorrow
if (diff < one_week)
format using days from now
.
.
.只要将compare与diff的abs值一起使用,这种比较将对过去和将来的日期都有效。通过检查diff是正数还是负数来显示先前的时间单位或现在开始的时间单位。
对于上午、下午、晚上等,您只需检查日期中的时间,对于您点击的格式类型,可以将时间显示为数字(较远)或自然语言(最近或较近的日期)。
发布于 2010-04-15 14:20:50
从该链接-> How do I calculate relative time in C#?
function posted(t) {
var now = new Date();
var diff = parseInt((now.getTime() - Date.parse(t)) / 1000);
if (diff < 60) { return 'less than a minute ago'; }
else if (diff < 120) { return 'about a minute ago'; }
else if (diff < (2700)) { return (parseInt(diff / 60)).toString() + ' minutes ago'; }
else if (diff < (5400)) { return 'about an hour ago'; }
else if (diff < (86400)) { return 'about ' + (parseInt(diff / 3600)).toString() + ' hours ago'; }
else if (diff < (172800)) { return '1 day ago'; }
else {return (parseInt(diff / 86400)).toString() + ' days ago'; }
} https://stackoverflow.com/questions/2643113
复制相似问题