【问题标题】:JavaScript date with offset capability and a specific format 'Sunday, 31 Oct 2019'具有偏移功能和特定格式“2019 年 10 月 31 日星期日”的 JavaScript 日期
【发布时间】:2019-09-03 17:11:22
【问题描述】:

我无法找到我想要的特定日期格式的解决方案,例如 2019 年 10 月 31 日,星期日。我还需要日期的偏移值。

我能得到的最接近的是 2019 年 10 月 31 日星期日。 我需要能够用用户输入的数字来抵消日期。 使用下面的脚本,在某些日期,日期/名称返回“未定义”,尽管其他日期项返回正确。

Date.prototype.addDays = function(days) {
var date = new Date(this.valueOf());
date.setDate(date.getDate() + days);
return date;}

date = new Date();
offset = effect("Slider Control")("Slider");

dayOffset = offset%7;

myDate = (date.addDays(offset));

dateString = String(myDate);

myMonth = dateString.split(/\s+/).slice(1,3).join(' ');

d = new Date();
days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
myDay = days[d.getDay()+dayOffset];

myDay + ", " + myMonth

我错过了什么?能给我建议吗?

【问题讨论】:

  • 感谢您的回复,但我确实使用了这个 - dayOffset = offset%7 请注意,“offset”是用户输入值,用于从今天的日期偏移。 .
  • 鉴于您已经将偏移量添加到 myDate,为什么不myDay = days[myDate.getDay()]。此外,new Date(this.valueOf()) 可以简单地为 new Date(this)

标签: javascript regex date date-format


【解决方案1】:

这一行:

myDay = days[d.getDay()+dayOffset];

很容易导致超出数组末尾的访问,在这种情况下,您将获得值undefined。考虑一下是否是星期五(第 5 天),然后将其加 3。 5 + 3 = 8,但您的数组索引最多只能达到 6。

环绕,使用% days.length(或% 7,如果你想硬编码;我不会):

myDay = days[(d.getDay() + dayOffset) % days.length];

8 % 7 是 1,星期一,实际上是星期五加三。

【讨论】:

  • 好的!伟大的。有用!!!我坚持你的代码,现在一切都很好。非常感谢您的帮助。
【解决方案2】:

经过更多研究,我发现了一个更健壮和优雅的代码 -

enter code hereDate.prototype.addDays = 函数(天){ enter code herevar date = new Date(this.valueOf()); enter code heredate.setDate(date.getDate() + days); enter code here返回日期;} enter code heredate = new Date(); enter code hereoffset = 5; enter code heremyDate = (date.addDays(offset)); enter code hereoptions = { 工作日:'long',月份:'long',日:'numeric'}; enter code here(myDate.toLocaleDateString("en-US", options))

我从这个答案中推断出一些信息 - How to format a JavaScript date

【讨论】:

    猜你喜欢
    • 2017-03-13
    • 1970-01-01
    • 2013-10-25
    • 2020-03-07
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    • 2015-06-04
    • 2019-09-28
    相关资源
    最近更新 更多