【问题标题】:How to get next seven days from X and format in JS如何从 X 中获取下一个 7 天并在 JS 中格式化
【发布时间】:2012-04-19 10:05:33
【问题描述】:

我想打印这样的东西(7 天日历),但可以从我想要的任何日期开始。

Monday, 1 January 2011
Tuesday, 2 January 2011
Wednesday, 3 January 2011
Thursday, 4 January 2011
Friday, 5 January 2011
Saturday, 6 January 2011
Sunday, 7 January 2011

例如,我想显示从 2 月 22 日开始的接下来的 7 天。不知道如何处理。

【问题讨论】:

标签: javascript date calendar


【解决方案1】:
var feb22 = new Date(2012, 1, 22);
var feb23 = new Date(feb22.getTime() + 1000*60*60*24);

...等等

【讨论】:

  • -1,这里没有可重用的东西。如果他想更改日期怎么办?还是重用功能?也没有按要求(或根本没有)格式化该日期。
  • @JamesHill 我不会为没有表现出任何努力的人做所有事情,但从你的回答看来,你喜欢做别人的工作:) 如果 OP 想要改变日期,我的例子表明从一个日期到另一个日期很容易,让 OP 自己做一些学习。 Downvotes 是针对错误答案的,我的答案没有错。
  • 我理解并感谢您所说的有人没有表现出努力。我选择回答这个问题是因为我觉得它很有趣。至于您的回答没有问题,我恭敬地不同意,因此投反对票。从什么时候开始接受不回答问题的答案?
  • @JamesHill 我认为你是在喂他们而不是教他们如何钓鱼......他的问题有一半涉及从开始日期到第二天,以及第二天......另一半正在打印,我让他从第二天开始,无需仅仅因为您花时间进行完整的写作而对其他答案投反对票
  • 我不想卷入评论战,所以这是我的最后一句话。正如我在原始评论中提到的那样,这是一种糟糕的前进方式。代码不能以任何方式重用。为什么不把它放在一个函数中?当 OP 想要将日历切换到下个月时,他将不得不重命名所有七个变量!如果他想显示两周的约会怎么办?可以将参数传递给的函数是处理此问题的唯一正确方法。
【解决方案2】:

您可以将变量 dateString 设置为您想要的任何值,并且在循环中您只需增加一天。 然后你会得到日期,但我认为格式不同。

var dateString = '22 Feb 2012';
var actualDate = new Date(dateString);
var newDate;

for(var i=1; i<=7; i++){
 newDate = new Date(actualDate.getFullYear(), actualDate.getMonth(), actualDate.getDate()+i);
}

【讨论】:

  • 通常他应该阅读任何关于 JS 日期对象的文档,像这样:w3schools.com/jsref/jsref_obj_date.asp
  • 或者你是说我们实际上应该给他尽可能多的代码,所以给他提供他想要的完整日历!?
  • 您不能发布不正确的答案,然后说该人应该阅读文档以推断出正确的答案(尤其是当您甚至没有在答案中发布指向文档的链接时)。跨度>
  • 但我在回答中表示他可能会得到不同的格式。在我看来,如果他不能在网上搜索如何格式化一个简单的日期,他应该从头开始学习 JS。但不是在stackoverflow...
  • 其实我时不时会使用 JavaScript 表单,并且可以使用手册。我不能做的是混合三件事: 1. 请记住,月份有不同的天数。 2.从我想要的任何一天开始 3.将日期名称与日期联系起来
【解决方案3】:

初始日期:

var startingDay = new Date(year, month, day);

来自startingDay的整整一周:

var thisDay = new Date();
for(var i=0; i<7; i++) {
  thisDay.setDate(startingDay.getDate() + i);
  console.log(thisDay.format());
}

格式化函数:

Date.prototype.format = function(){
    var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];        
    var days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
    return days[this.getDay()]
          +", "
          +this.getDate()
          +" "
          +months[this.getMonth()] 
          +" "
          +this.getFullYear();
};

【讨论】:

  • 我只是懒得加了。
【解决方案4】:

这似乎就是你要找的东西:

function GetDates(startDate, daysToAdd) {
    var aryDates = [];

    for (var i = 0; i <= daysToAdd; i++) {
        var currentDate = new Date();
        currentDate.setDate(startDate.getDate() + i);
        aryDates.push(DayAsString(currentDate.getDay()) + ", " + currentDate.getDate() + " " + MonthAsString(currentDate.getMonth()) + " " + currentDate.getFullYear());
    }

    return aryDates;
}

function MonthAsString(monthIndex) {
    var d = new Date();
    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";

    return month[monthIndex];
}

function DayAsString(dayIndex) {
    var weekdays = new Array(7);
    weekdays[0] = "Sunday";
    weekdays[1] = "Monday";
    weekdays[2] = "Tuesday";
    weekdays[3] = "Wednesday";
    weekdays[4] = "Thursday";
    weekdays[5] = "Friday";
    weekdays[6] = "Saturday";

    return weekdays[dayIndex];
}

var startDate = new Date();
var aryDates = GetDates(startDate, 7);
console.log(aryDates);​
​

结果(截至今天):

["Thursday, 5 April 2012",
 "Friday, 6 April 2012", 
 "Saturday, 7 April 2012", 
 "Sunday, 8 April 2012", 
 "Monday, 9 April 2012", 
 "Tuesday, 10 April 2012", 
 "Wednesday, 11 April 2012", 
 "Thursday, 12 April 2012"]

这里是a working fiddle

【讨论】:

  • 非常感谢!从实际示例中学习比纯理论要容易得多。
【解决方案5】:

这是我使用Moment.js的解决方案

未来 7 天

let days = [];
let daysRequired = 7

for (let i = 1; i <= daysRequired; i++) {
  days.push( moment().add(i, 'days').format('dddd, Do MMMM YYYY') )
}

console.log(days)
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"&gt;&lt;/script&gt;

以防万一您需要前 7 天

let days = [];
let daysRequired = 7

for (let i = daysRequired; i >= 1; i--) {
  days.push( moment().subtract(i, 'days').format('dddd, Do MMMM YYYY') )
}

console.log(days)
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"&gt;&lt;/script&gt;

【讨论】:

    【解决方案6】:

    如果您需要从今天开始的接下来的 7 个工作日

    const isWeekday = (date) => {
    	return date.weekday()!==0 && date.weekday()!==6
    }
    
    const weekdays=[];
    let numberOfDaysRequired = 7
    let addDaysBy = 1
    moment.locale('en')
    while(weekdays.length < numberOfDaysRequired)
    {
      const d = moment().add(addDaysBy, 'days')
      if(isWeekday(d))
      {
      	weekdays.push(d.format('dddd, Do MMMM YYYY'))
      	
      }
      addDaysBy++;
    }
    
    console.log(weekdays)
    &lt;script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"&gt;&lt;/script&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-19
      • 2022-01-02
      • 2021-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多