JavaScript-获取星期几的日期?

时间:2020-08-28 12:07:26

标签: javascript

例如,如何获取下周一的日期和下午5:30的时间,并计算当前日期和时间与该日期和时间之间的时差?

如果我现在在2020年8月28日17:35运行它,它应该会给我8/31/2020 17:30以及2天23小时55分钟的差额。

3 个答案:

答案 0 :(得分:0)

我希望有帮助:

// takes dayIndex from Sunday(0) to Saturday(6)
const getNextDay = (dayIndex) => {
  const today = new Date();

  today.setDate(
    today.getDate() + ((dayIndex - 1 - today.getDay() + 7) % 7) + 1
  );
  today.setHours(17, 30, 00);

  return today;
};

const getTimeleft = (dateNow, dateFuture) => {
  let seconds = Math.floor((dateFuture - dateNow) / 1000);
  let minutes = Math.floor(seconds / 60);
  let hours = Math.floor(minutes / 60);
  let days = Math.floor(hours / 24);

  hours = hours - days * 24;
  minutes = minutes - days * 24 * 60 - hours * 60;
  seconds = seconds - days * 24 * 60 * 60 - hours * 60 * 60 - minutes * 60;

  return `${days} days ${hours} hours ${minutes} minutes`;
};

const now = new Date();
const nextMonday = getNextDay(1);
const timeleft = getTimeleft(now, nextMonday);

console.log(nextMonday.toLocaleString());
console.log(timeleft);

答案 1 :(得分:0)

您可以使用moment.js,它是一个非常有用的日期库:

<script src="https://momentjs.com/downloads/moment.js"></script>
<script>
const today = moment();
const nextMonday  = moment().add(1, 'weeks').isoWeekday(1);
nextMonday.set({'hour': 17, 'minute': 30, 'seconds': 0});

console.log(nextMonday.toString());

const duration = moment.duration(nextMonday.diff(today));
const days = duration.asDays();
const hours = (days - Math.floor(days)) * 24;
const minutes = (hours - Math.floor(hours)) * 60;

console.log("days", Math.floor(days));
console.log("hours", Math.floor(hours));
console.log("minutes", Math.floor(minutes));
</script>

答案 2 :(得分:0)

这是工作示例:

function nextWeekMonday(date)
  {
    var diff = date.getDate() - date.getDay() + (date.getDay() === 0 ? -6 : 1);
    var currWeekMonday = new Date(date.setDate(diff)); 
    return new Date(currWeekMonday.getTime() + 7 * 24 * 60 * 60 * 1000);
  }
 
 function getDateDifference(current, future) {
  // get total seconds between the times
  var delta = Math.abs(future - current) / 1000;

  // calculate (and subtract) whole days
  var days = Math.floor(delta / 86400);
  delta -= days * 86400;

  // calculate (and subtract) whole hours
  var hours = Math.floor(delta / 3600) % 24;
  delta -= hours * 3600;

  // calculate (and subtract) whole minutes
  var minutes = Math.floor(delta / 60) % 60;
  delta -= minutes * 60;

  // what's left is seconds
  var seconds = delta % 60;
  
  return `${days} Days, ${hours} Hours, ${minutes} Minutes, ${seconds} Seconds`;
 }

var curr = new Date; // get current date
var nextMonday = nextWeekMonday(curr);

console.log(getDateDifference(curr, nextMonday));