【问题标题】:Setting Date X Days From Today从今天开始设置日期 X 天
【发布时间】:2015-02-26 05:38:07
【问题描述】:

我们正在设置 Google 信任商店,需要使用今天的日期加上 2 天填充以下跨度 ID 字段 ORDER_EST_SHIP_DATE

<span id="gts-o-est-ship-date">ORDER_EST_SHIP_DATE</span>

输出为YYYY-MM-DD 格式

例如,今天是 2015-02-25。我需要发布的代码行:

<span id="gts-o-est-ship-date">2015-02-27</span>

我还需要发布另一个跨度 ID 为今天的日期加上 7 天:

<span id="gts-o-est-delivery-date">ORDER_EST_DELIVERY_DATE</span>

所以基于今天的日期有两个不同的日期: - 1 从今天起 2 天 - 1 表示从今天起 7 天

function addDays(theDate, days) {
    return new Date(theDate.getTime() + days*24*60*60*1000);
}

var newDate = addDays(new Date(), 5);

【问题讨论】:

  • 您是否使用 Javascript 来计算新日期并更新跨度?您已经拥有/尝试过哪些代码?

标签: javascript


【解决方案1】:

JavaScript 日期有一个内置方法:

var date = new Date();
date.setDate(date.getDate() + 2 /*days*/ );
var dateString = date.toISOString().slice(0, 10);
document.getElementById('gts-o-est-ship-date').innerHTML = dateString;
&lt;div id="gts-o-est-ship-date"&gt;&lt;/div&gt;

toISOString 上的文档

【讨论】:

  • JavaScript 什么时候有了Date.prototype.format
  • 我从here 得到它。现在我将使用 toLocalFormat
  • toLocalFormat 没有标准化 API,所以在 IE 上失败。
【解决方案2】:

首先使用Date.parse将日期转换为以微秒为单位的时间戳:

比以微秒为单位添加 2 和 7 天,转换回人类可读的日期。

var timeStamp = Date.parse("2015-02-25");

//add two days, in microseconds = 60*60*24*2*1000
var TwoDays = 172800000;
var SevenDays = 604800000;

function convertToDate(timeStamp)
{
  var date = new Date(timeStamp);
  return date.toJSON().split("T")[0];
}

document.write(convertToDate(timeStamp+TwoDays)); //show two days in future
document.write("<br />");
document.write(convertToDate(timeStamp+SevenDays)); //show seven days in future

这将返回一个 UTC 日期。因此,您可能需要将其转换为用户语言环境。请务必为您的所有时间选择一个基本时间(例如 UTC)并将其转换为用户区域设置作为最后一步。

【讨论】:

  • @Sigismundus。像魅力一样工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-05
  • 2018-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-22
  • 2021-12-30
相关资源
最近更新 更多