For*_*vin 5 javascript time date
我知道这个线程:优雅地检查给定的日期是否是昨天
但我只是专门寻找一个 JavaScript 解决方案。如果可能的话,一个简短的。我真的想不出一个 100% 可靠的方法..
到目前为止,我是这样做的:
function FormatDate(someDtUTC) {
var someDt = new Date(someDtUTC.getTime() + someDtUTC.getTimezoneOffset() * 60 * 1000);
var dtNow = new Date();
if (dtNow.getUTCFullYear() == someDt.getUTCFullYear() && dtNow.getUTCMonth() == someDt.getUTCMonth()) {
if (dtNow.getUTCDate() == someDt.getUTCDate())
var dateString = "Today, " + Ext.Date.format(someDt, 'G:i'); // Today, 15:32
else if (dtNow.getUTCDate() - 1 == someDt.getUTCDate())
var dateString = "Yesterday, " + Ext.Date.format(someDt, 'G:i'); //Yesterday, 13:26
else if (dtNow.getUTCDate() - someDt.getUTCDate() < 7)
var dateString = Ext.Date.format(someDt, 'l, G:i'); //Sunday, 14:03
} else
var dateString = Ext.Date.format(someDt, 'j.n.y\, G:i'); //7.8.15, 8:25
return dateString;
}
Run Code Online (Sandbox Code Playgroud)
不要担心Ext.Date.format()功能,这不是问题的一部分。
该代码的问题在于,它无法处理以下情况:
Today: 01.08.15
Yesterday: 31.07.15
Run Code Online (Sandbox Code Playgroud)
知道我如何告诉函数来处理它吗?
我不是在寻找带有外部库(包括 ExtJS)的解决方案。我想用原始 JavaScript 解决这个问题。
好的,我们可以按照以下步骤进行:
Date()对象。.setTime()为特定时间。.getTime(),计算毫秒。86400000,那就是昨天。86400000,则为天数。JavaScript 代码
var a = new Date(2015, 8 - 1, 25); // Today
var b = new Date(2015, 8 - 1, 24); // Yesterday
var c = new Date(); // Now
c.setHours(0);
c.setMinutes(0);
c.setSeconds(0, 0);
if (a.getTime() == c.getTime())
return "Today";
else if (b.getTime() == c.getTime())
return "Yesterday";
else if ((new Date(2015, 8 - 1, 25 - 7)).getTime() < c.getTime())
return "Less than a week";
Run Code Online (Sandbox Code Playgroud)
如果你想打印今天,昨天,显示星期几,如果是当前年份,则显示没有年份的日期,如果是前一年,则显示日期与年份,下面的代码会帮助你。
var fulldays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
function formatDate(someDateTimeStamp) {
var dt = new Date(someDateTimeStamp),
date = dt.getDate(),
month = months[dt.getMonth()],
timeDiff = someDateTimeStamp - Date.now(),
diffDays = new Date().getDate() - date,
diffMonths = new Date().getMonth() - dt.getMonth(),
diffYears = new Date().getFullYear() - dt.getFullYear();
if(diffYears === 0 && diffDays === 0 && diffMonths === 0){
return "Today";
}else if(diffYears === 0 && diffDays === 1) {
return "Yesterday";
}else if(diffYears === 0 && diffDays === -1) {
return "Tomorrow";
}else if(diffYears === 0 && (diffDays < -1 && diffDays > -7)) {
return fulldays[dt.getDay()];
}else if(diffYears >= 1){
return month + " " + date + ", " + new Date(someDateTimeStamp).getFullYear();
}else {
return month + " " + date;
}
}
formatDate(Date.now()) //"Today"
formatDate(Date.now() - 86400000) // "Yesterday"
formatDate(Date.now() - 172800000) // it will return the name of the week if it is beyond two days
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16002 次 |
| 最近记录: |