首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将2010-04-16 16:30:00转换为“明天下午”

将2010-04-16 16:30:00转换为“明天下午”
EN

Stack Overflow用户
提问于 2010-04-15 14:11:35
回答 4查看 1.3K关注 0票数 3

将2010-04-16 16:30:00转换为“明天下午”,或将另一个日期转换为“今天下午”、“明年”、“下周星期三”。你就明白了。有人知道有PHP或Javascript库可以做到这一点吗?

EN

回答 4

Stack Overflow用户

发布于 2010-04-15 14:16:24

我认为你可以用这里说的话走很长一段路:Calculate relative time in C#

逻辑就在那里,如果一种不同语言的解决方案适合您,那么做与javascript等效的代码也不是太难。

票数 4
EN

Stack Overflow用户

发布于 2010-04-15 14:17:53

可能有更优雅的解决方案(寻找自然语言格式),但我个人找不到任何解决方案。

我建议使用阈值来计算从now到您要格式化的日期的距离。

伪解:

代码语言:javascript
复制
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与diffabs值一起使用,这种比较将对过去和将来的日期都有效。通过检查diff是正数还是负数来显示先前的时间单位或现在开始的时间单位。

对于上午、下午、晚上等,您只需检查日期中的时间,对于您点击的格式类型,可以将时间显示为数字(较远)或自然语言(最近或较近的日期)。

票数 1
EN

Stack Overflow用户

发布于 2010-04-15 14:20:50

从该链接-> How do I calculate relative time in C#?

代码语言:javascript
复制
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'; } 
} 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2643113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档