将2010-04-16 16:30:00转换为“明天下午”或将另一个日期转换为“今天下午”,“明年”,“下周三周三”。你得到了照片。 有人知道可以做到这一点的PHP或Javascript库吗?
答案 0 :(得分:4)
我认为你可以对这里所说的内容走得很远:Calculate relative time in C#
逻辑是存在的,如果用不同语言的解决方案适合你,那么做javascript等效并不难。
答案 1 :(得分:1)
可能有更优雅的解决方案(寻找自然语言格式),但我个人无法找到任何。
我建议计算从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
.
.
.
只要您使用与abs
diff
的值进行比较,该比较将适用于过去和将来的日期。通过检查diff
是正还是负,显示时间单位前或时间单位。
对于早晨,下午,晚上等,您只需要检查日期中的时间,并且关于您点击的格式类型,或者将时间显示为数字(远处)或自然语言(最近或近日期。)
答案 2 :(得分:0)
从此链接 - &gt; How do I calculate relative time?
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'; }
}
答案 3 :(得分:0)
function gett($sam){
$times = time() - $sam;
if ($times == 60){
$times = "a minute ago";
}
if (($times != 1) && ($times < 60) && ($times != 0)){
$times = "$times seconds ago";
}
if ($times == 0){
$times = "less than a second ago";
}
if ($times == 1){
$times = "a second ago";
}
if ($times > 60 && $times < 3600){
$times = ceil($times/60)." minutes ago";
}
if($times == 3600){
$times = "an hour ago";
}
if($times > 3600 && $times < 86400){
$times = ceil($times/3600)." hours ago";
}
if($times == 86400){
$times = "a day ago";
}
if($times > 86400){
$times = ceil($times/86400)." days ago";
}
return $times; }
使用方法: $ updated = gett($ timestamp); 其中$ timestamp非常明显。