Javascript日期以漂亮的格式列出消息

时间:2015-07-28 14:19:53

标签: javascript cordova

我需要一个能够采用格式的日期和时间的功能" 2015-07-28T11:54:33.758Z"并将返回:

  • 如果日期是今天(例如14:02),则分钟和小时
  • 如果不到一周前的日期名称(例如星期一)
  • 日期和月份,如果年龄较大(例如7月23日)

该功能将用于手机间隙消息应用程序,因此我不想使用jquery或其他库,并希望使用纯JavaScript。到目前为止,我已经修改了我在网上找到的内容,如下所示:



document.getElementById('date').innerHTML = timeStamp('2015-07-27T11:54:33.758Z', true);

function timeStamp(dateIn) {
  // Create a date object with the current time
  var now = new Date(dateIn);

  var month = new Array();
  month[0] = "January";
  month[1] = "February";
  month[2] = "March";
  month[3] = "April";
  month[4] = "May";
  month[5] = "June";
  month[6] = "July";
  month[7] = "August";
  month[8] = "September";
  month[9] = "October";
  month[10] = "November";
  month[11] = "December";

  // Create an array with the current month, day and time
  var date = [now.getDate(), month[now.getMonth() + 1], now.getFullYear()];

  // Create an array with the current hour, minute and second
  var time = [now.getHours(), now.getMinutes(), now.getSeconds()];

  // Determine AM or PM suffix based on the hour
  var suffix = (time[0] < 12) ? "AM" : "PM";

  // Convert hour from military time
  time[0] = (time[0] < 12) ? time[0] : time[0] - 12;

  // If hour is 0, set it to 12
  time[0] = time[0] || 12;

  // If seconds and minutes are less than 10, add a zero
  for (var i = 1; i < 3; i++) {
    if (time[i] < 10) {
      time[i] = "0" + time[i];
    }
  }


  var today = new Date();
  if (now.toDateString() == today.toDateString()) {
    return time['0'] + ":" + time['1'];
  } else {
    return date['0'] + " " + date['1'];
  }

}
&#13;
<span id="date"></span>
&#13;
&#13;
&#13;

它完成了第一部分和第三部分。不知道如何获得一个将返回的日期格式&#34;星期二&#34;如果日期是最后一个星期二

2 个答案:

答案 0 :(得分:1)

如果你要进行大量的日期操作和格式化,你可能需要查看moment.js - 它简化了很多这些操作。

查看文档中的calendar time部分,根据需要自定义不同时间段的格式。

moment("2015-07-28T11:54:33.758Z").calendar();

答案 1 :(得分:0)

有一个名为Moment.js的图书馆可以帮助你。

网站上的例子:

moment().format('MMMM Do YYYY, h:mm:ss a'); // July 28th 2015, 10:24:33 am
moment().format('dddd');                    // Tuesday
moment().format("MMM Do YY");               // Jul 28th 15
moment().format('YYYY [escaped] YYYY');     // 2015 escaped 2015
moment().format();                          // 2015-07-28T10:24:33-04:00

moment("20111031", "YYYYMMDD").fromNow(); // 4 years ago
moment("20120620", "YYYYMMDD").fromNow(); // 3 years ago
moment().startOf('day').fromNow();        // 10 hours ago
moment().endOf('day').fromNow();          // in 14 hours
moment().startOf('hour').fromNow();       // 26 minutes ago

您可以编写一个使用这些格式化函数的函数,还可以编写一些逻辑来判断您需要哪些案例。