2012-01-10 69 views
5

在Java的脚本,我想要得到的日期和周数和年份日期的最后一周的第一周的最后一天....如何让第一天的周数和年份

对于例如,如果我给喜欢

2(week),2012

输入它应该返回的值

2012-01-08 and 2012-01-14

+0

怎么样,如果我给2 2013年?它应该返回什么? – 2012-01-10 12:27:13

+0

它应该返回第一个日期和最后一个日期的第二个星期.... – balaphp 2012-01-10 12:29:27

+0

@balaphp实际上它将返回2013年第二周的第一个和最后一个日期..我是正确的。 ? – Chandresh 2012-01-10 12:32:02

回答

7

试试这个:

var year = 2012; 
var week = 2; 
var d = new Date("Jan 01, "+year+" 01:00:00"); 
var w = d.getTime() + 604800000 * (week-1); 
var n1 = new Date(w); 
var n2 = new Date(w + 518400000) 

N1包含星期
N2的第一天包含星期

至于常量的最后一天:
604800000是一个星期以毫秒为单位
518400000是六天

+3

不正确,n1不一定是星期一,n2不一定是星期日。 – 2014-09-11 21:25:41

3

对@bardiir的回答有点改变,如果一年中的第一天不是星期日(或星期一),则表示结果不正确。 你应该减去第一天的数字。

更改代码

firstDay = new Date(2015, 0, 1).getDay(); 
console.log(firstDay); 
var year = 2015; 
var week = 67; 
var d = new Date("Jan 01, "+year+" 01:00:00"); 
var w = d.getTime() -(3600000*24*(firstDay-1))+ 604800000 * (week-1) 
var n1 = new Date(w); 
var n2 = new Date(w + 518400000) 

console.log(n1); 
console.log(n2); 

,如果你想第一个是星期天,改变(firstDay-1)

-1
dt = new Date(); 
    var firstDateOfWeek=(dt.setDate(dt.getDate()-dt.getDay())); 
    var lastDateOfWeek=(dt.setDate(dt.getDate()+6-dt.getDay())); 
相关问题