使用JavaScript在给定日期之前最接近的星期日

时间:2011-05-16 22:55:17

标签: javascript datetime

我需要知道 php &中指定日期的上周日的日期。的的javascript

让我们有一个函数give_me_last_Sunday

give_me_last_Sunday('20110517') is 20110515
give_me_last_Sunday('20110604') is 20110529

完整备份在星期日=每周完成。如果我想恢复每日备份,我需要完整(每周)和每日备份。我需要在恢复到临时目录之前复制备份文件,以便我恢复每日备份,我需要知道每周备份文件需要在每日文件中复制。

我的想法是获得给定日期的Julian表示(或类似的东西)然后减去1并检查它是否是星期日...不确定这是否是最好的想法以及如何将给定日期转换为我可以减去。

4 个答案:

答案 0 :(得分:13)

根据Thomas的努力,并提供输入字符串正是您指定的格式,然后:

function lastSunday(d) {
  var d = d.replace(/(^\d{4})(\d{2})(\d{2}$)/,'$1/$2/$3');
  d = new Date(d);
  d.setDate(d.getDate() - d.getDay());
  return d;
}

修改

如果我现在写这个,我不依赖于解析字符串的Date对象,而是自己做:

function lastSunday(s) {
  var d = new Date(s.substring(0,4), s.substring(4,6) - 1, s.substring(6));
  d.setDate(d.getDate() - d.getDay());
  return d;
}

虽然我测试过的所有浏览器都正确解析了yyyy / mm / dd格式,但我认为坚持基本方法会更加健壮。特别是当它们可能更有效时。

答案 1 :(得分:4)

好的,这只适用于JavaScript。您有一个输入,您需要从中提取月份,日期和年份。以下是关于如何获取日期的部分答案:

<script type="text/javascript">
var myDate=new Date();
myDate.setFullYear(2011,4,16)

var a = myDate.getDate();
var t = myDate.getDay();
var r = a - t;
document.write("The date last Sunday was "  + r);

</script>

因此setFullYear函数将myDate设置为指定的日期,前四位数是年份,下一个是月份(0 = Jan,1 = Feb。,...)。最后一个是实际日期。然后上面的代码为您提供了之前的星期日。我猜你可以添加更多的代码来获得月份(使用getMonth()方法)。以下是一些可能有用的链接

(你可以找到你需要的其他功能)

我希望这有点帮助,即使它不是一个完整的答案。

答案 2 :(得分:1)

Yup和strtotime已经移植到JS,例如http://phpjs.org/functions/strtotime:554

答案 3 :(得分:0)

最终代码(非常感谢@Thomas&amp; @Rob)

function lastSunday(d) {
  var d = d.replace(/(^\d{4})(\d{2})(\d{2}$)/,'$1/$2/$3');

  d = new Date(d);
  d.setDate(d.getDate() - d.getDay());

  year = d.getFullYear()+'';
  month = d.getMonth()+1+'';
  day = d.getDate()+'';
  if ( month.length == 1 ) month = "0" + month; // Add leading zeros to month and date if required
  if ( day.length == 1 ) day = "0" + day;  

  return year+month+day;
}