微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从给定的星期数和年份中获取所有日期

如何解决从给定的星期数和年份中获取所有日期

假设我有第43周,到2020年

我如何获得这样的输出结果

dates = ['Monday,October 19,2020','Tuesday,October 20,'Wednesday,October 21,'Thursday,October 22,'Friday,October 23,'Saturday,October 24,'Sunday,]

我已经尝试过了,但是它给了我星期天到星期六,这导致第43周的日期范围不正确:

function getDateOfWeek(w,y) {
  var simple = new Date(y,1 + (w - 1) * 7);
  var dow = simple.getDay();
  var ISOweekStart = simple;
  if (dow <= 4)
    ISOweekStart.setDate(simple.getDate() - simple.getDay() + 1);
  else
    ISOweekStart.setDate(simple.getDate() + 8 - simple.getDay());
  const temp = {
    d: ISOweekStart.getDate(),m: ISOweekStart.getMonth(),y: ISOweekStart.getFullYear(),}
  const numDaysInMonth = new Date(temp.y,temp.m + 1,0).getDate()

  return Array.from({
    length: 7
  },_ => {
    if (temp.d > numDaysInMonth) {
      temp.m += 1;
      temp.d = 1;
    }
    return new Date(temp.y,temp.m,temp.d++).toUTCString()
  });
}

console.log(getDateOfWeek(43,2020));

解决方法

如@Jamiec所建议。通过使用momentjs,可以简化所有使用本地javascript日期的麻烦

df$date <- as.Date(NA)
x1 <- grepl('^\\d+$',df$A)
x2 <- grepl('\\d+-\\d+-\\d+',df$A)
df$date[x1] <- as.Date(as.numeric(df$A[x1]),origin = "1899-12-30")
df$date[x2] <- as.Date(df$A[x2])
df %>% group_by(id) %>% fill(date,.direction = 'updown')

以上代码将返回从星期一到星期天的日期数组

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。