我需要知道 php &中指定日期的上周日的日期。的的javascript
让我们有一个函数give_me_last_Sunday
give_me_last_Sunday('20110517') is 20110515
give_me_last_Sunday('20110604') is 20110529
完整备份在星期日=每周完成。如果我想恢复每日备份,我需要完整(每周)和每日备份。我需要在恢复到临时目录之前复制备份文件,以便我恢复每日备份,我需要知道每周备份文件需要在每日文件中复制。
我的想法是获得给定日期的Julian表示(或类似的东西)然后减去1并检查它是否是星期日...不确定这是否是最好的想法以及如何将给定日期转换为我可以减去。
答案 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;
}