2013-01-15 40 views
3

我创建一个简单的电子邮件客户端,我想收件箱显示的日期是17:15JavaScript来确定日期和输出无论是“时间”,如果它是今天,“昨天”昨天,与实际日期,如果是以前那么

今天13:17

昨天20:38

2012年1月13日@十二月18:12

:该电子邮件的格式接收

我从数据库中检索数据,将其输出到XML(所以一切都可以通过AJAX来完成),并打印结果到<ul><li>格式。

日期和时间分别存储格式为:

Date(y-m-d)

Time(H:i:s)

what i have so far

我看到类似的东西可能用PHP。这里 - PHP: date "Yesterday", "Today"

这是可能使用JavaScript?

回答

1

我会去像这样的东西

function getDisplayDate(year, month, day) { 
    today = new Date(); 
    today.setHours(0); 
    today.setMinutes(0); 
    today.setSeconds(0); 
    today.setMilliseconds(0); 
    compDate = new Date(year,month-1,day); // month - 1 because January == 0 
    diff = today.getTime() - compDate.getTime(); // get the difference between today(at 00:00:00) and the date 
    if (compDate.getTime() == today.getTime()) { 
     return "Today"; 
    } else if (diff <= (24 * 60 * 60 *1000)) { 
     return "Yesterday"; 
    } else { 
     return compDate.toDateString(); // or format it what ever way you want 
    } 
} 

比你应该能够得到这样的日期:

getDisplayDate(2013,01,14); 
+0

何我可以改变格式,以便它可以阅读2012年8月12日星期日? – Mike

1

这是这两个答案的汇编(和应该给你一个很好的开始):

我建议阅读这两个问题和答复得到更好地了解发生了什么。


function DateDiff(date1, date2) { 
    return dhm(date1.getTime() - date2.getTime()); 
} 

function dhm(t){ 
    var cd = 24 * 60 * 60 * 1000, 
     ch = 60 * 60 * 1000, 
     d = Math.floor(t/cd), 
     h = '0' + Math.floor((t - d * cd)/ch), 
     m = '0' + Math.round((t - d * cd - h * ch)/60000); 
    return [d, h.substr(-2), m.substr(-2)].join(':'); 
} 

var yesterdaysDate = new Date("01/14/2013"); 
var todaysDate = new Date("01/15/2013"); 

// You'll want to perform your logic on this result 
var diff = DateDiff(yesterdaysDate, todaysDate); // Result: -1.00 
1
function getDisplayDate(year, month, day) { 
    today = new Date(); 
    today.setHours(0); 
    today.setMinutes(0); 
    today.setSeconds(0); 
    today.setMilliseconds(0); 
    compDate = new Date(year,month-1,day); // month - 1 because January == 0 
    diff = today.getTime() - compDate.getTime(); // get the difference between today(at 00:00:00) and the date 
    if (compDate.getTime() == today.getTime()) { 
     return "Today"; 
    } else if (diff <= (24 * 60 * 60 *1000)) { 
     return "Yesterday"; 
    } else { 
     //return compDate.toDateString(); // or format it what ever way you want 
     year = compDate.getFullYear(); 
     month = compDate.getMonth(); 
     months = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'); 
     day = compDate.getDate(); 
     d = compDate.getDay(); 
     days = new Array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'); 

     var formattedDate = days[d] + " " + day + " " + months[month] + " " + year; 
     return formattedDate; 
    } 
} 

这是@ xblitz与我的格式回答显示在一个不错的方式的日期。

相关问题