修改函数以计算到新的一年,而不是返回值 12/33/2014
Amending the function to calculate into the new year and not return the value 12/33/2014
我需要你的帮助。
似乎函数 this_week('end') 返回了一个错误的日期 12/33/2014 (mm/dd/yyyy),它应该正确读取:
2015/2/1
function this_week(x) {
var today, todayNumber, fridayNumber, sundayNumber, monday, friday;
today = new Date();
todayNumber = today.getDay();
mondayNumber = 1 - todayNumber;
fridayNumber = 5 - todayNumber;
if (x === 'start') {
//var start_dd = today.getDate() + mondayNumber
var start_dd = today.getDate()
var start_mm = today.getMonth() + 1
var start_yyyy = today.getFullYear()
return start_mm + '/' + start_dd + '/' + start_yyyy
}
if (x === 'end') {
var end_dd = today.getDate() + fridayNumber
var end_mm = today.getMonth() + 1
var end_yyyy = today.getFullYear()
return end_mm + '/' + end_dd + '/' + end_yyyy
}
}
需要做什么?
在增加或减少日期时,您必须使用Date
对象。
function this_week(x) {
var date, todayNumber, fridayNumber;
date = new Date();
todayNumber = date .getDay();
mondayNumber = 1 - todayNumber;
fridayNumber = 5 - todayNumber;
if (x === 'start') {
date.setDate(date.getDate()+ mondayNumber);
}
else if (x === 'end') {
date.setDate(date.getDate()+ fridayNumber);
}
var end_dd = date.getDate().toString();
end_dd = (end_dd.length == 2)?end_dd:"0"+end_dd;
var end_mm = (date.getMonth() + 1).toString();
end_mm = (end_mm.length == 2)?end_mm:"0"+end_mm;
var end_yyyy = date.getFullYear().toString();
return end_mm + '/' + end_dd + '/' + end_yyyy;
}
document.write(this_week('end'));
请注意,一月份的月份代码是0
对于更简单的版本:
function this_week(x,d) {
var d = d || new Date(),
offset = 0;
switch (x){
case 'start':
offset = 1 - d.getDay();
break;
case 'end':
offset = 5 - d.getDay();
break;
}
d.setDate(d.getDate() + offset);
return d;
}
var oE = document.getElementById('o'),
tE = document.getElementById('t');
function $log(t){ oE.innerHTML += (t || '') + "'r'n"; }
function $fmt(d){ return [d.getMonth() + 1, d.getDate(), d.getFullYear() ].map(function(v){ return v < 10 ? '0' + v : v; }).join('/'); }
function c(el){ try { var d = new Date(el.value); tE.innerHTML = 'Start: ' + $fmt(this_week('start',d)) + '; End: ' + $fmt(this_week('end',d)); } catch (e) { tE.innerHTML = 'Invalid Date'; } }
$log( 'Fixed dates' );
var ds = [
new Date(2014, 12 - 1, 29),
new Date(2015, 1 - 1, 1)
];
for (var i = 0; i < ds.length; i++){
$log( $fmt(ds[i]) + ' start » ' + $fmt(this_week('start', ds[i])) );
$log( $fmt(ds[i]) + ' end » ' + $fmt(this_week('end', ds[i])) );
}
$log();
$log( 'Based on today:' );
$log( $fmt(this_week('start')) );
$log( $fmt(this_week('end')) );
$log();
$log('::All dates in mm/dd/yyyy format::');
<pre id="o"></pre>
<hr />
<input type="text" onchange="c(this);" placeholder="try me"><button>Try</button><span id="t"></span>
假设一整周可能在星期日或星期一开始,此函数涵盖以下两个方面:
function this_week(start, givendate, weekStartsOnsunday) {
givendate = givendate && givendate instanceof Date ? givendate : new Date;
var today = givendate.getDay(),
isSunday = !weekStartsOnsunday && today < 1,
diff = !start
? (isSunday ? -2 : (5 - today))
: (isSunday ? -6 : (1 - today));
// set date to begin/end of week and return it formatted
return (givendate.setDate(givendate.getDate() + diff), format(givendate));
}
// format mm/dd/yyyy with leading zero's using an Array and Array.map
function format(date) {
return [ date.getDate(),
date.getMonth()+1,
date.getFullYear()
].map(function (v) {return v <10 ? '0'+v : v;})
.join('/');
}
var log = Helpers.log2Screen;
// today and week starts on monday
log('`this_week()`: ', this_week());
log('`this_week(true)`: ',this_week(true));
// given date is sunday, week starts on monday
log('`this_week(false, new Date(''2015/01/04''))`: ',
this_week(false, new Date('2015/01/04')), ' (week ends on sunday)');
log('`this_week(true, new Date(''2015/01/04''))`: ',
this_week(true, new Date('2015/01/04')), ' (week ends on sunday)');
// given date is sunday, week starts on sunday
log('`this_week(false, new Date(''2015/01/04''), true)`: ',
this_week(false, new Date('2015/01/04'), true), ' (week starts on sunday)')
log('`this_week(true, new Date(''2015/01/04''), true)`: ',
this_week(true, new Date('2015/01/04'), true), ' (week starts on sunday)');
<script src="http://kooiinc.github.io/JSHelpers/Helpers-min.js"></script>
相关文章:
- 在java脚本中选择的随机日期上添加一年
- 当用户在文本框中输入日期时,如何计算一年的持续时间
- 如何从剑道日期选择器中只获得一年
- 更改第二个日期时的第一个日期选择器将自动更改一年
- 如何验证日期必须从两个日期中不少于一年
- javascript-一旦我选择了一年,它就不能再次选择(并且被隐藏了)
- 如何使用 JavaScript 从当前日期添加一年
- 修改函数以计算到新的一年,而不是返回值 12/33/2014
- 时刻.js错误,同时在一年的最后一周添加 1 周
- 在一年的第一天获得全年回报
- 使用jQuery或JavaScript对一周、一个月和一年的日期进行排序
- 如何隐藏传说中的所有年份,除了剑道图Mvc中的最后一年
- 如何使用Javascript获得现在的一年
- 输出年龄从一年开始,然后每年增加1 javascript
- 给今天加一年
- 检查日期对象是否超过一年
- 经过一年的完美运作,Colorbox停止工作了
- 一年不工作在Javascript代码
- 有没有办法找到某一年高中毕业的所有facebook用户?
- JS time -为两个日期之间的每一年创建一个数组