我写了这两个javascript函数:
function getDateFromDateAtHourOfDay(date, hour)
{
var year = date.getFullYear();
var month = date.getMonth();
var day = date.getDate();
var newDate = new Date(year, month, day, hour, 0, 0);
return (newDate);
}
和
function getDateDescriptionFromDate(date)
{
var year = date.getFullYear();
var month = date.getMonth();
var day = date.getDate();
return ( (day < 10 ? ("0" + day) : (day)) + "." + (month < 10 ? ("0" + month) : (month)) + "." + year);
}
第一个应该返回同一年/月/日的新日期,但是每天的不同时段(例如,转换2015-04-05 15:00到2015-04-05 16:00)。
第二个应该只返回格式为dd.MM.yyyy的日期字符串。
现在如果我打电话
var selectedDate = new Date(); // normally function parameter
var startDate = getDateFromDateAtHourOfDay(selectedDate, hour);
document.getElementById("dateLabel").innerHTML = getDateDescriptionFromDate(startDate);
其中hour是一个函数参数,例如15(使用alert测试),在我的“dateLabel”中它表示05.01.2015。但是如果我做的话
alert (selectedDate);
结果是:Sun Apr 05 2015 15:52:26 GMT + 0200(CEST)=&gt;现在
调用之间未修改 selectedDate
(警告并设置innerHTML)。
我认为这两个功能没有按照我的想法去做,但也许你会发现错误。 谢谢!
修改
我试过这段代码:
selectedDate = new Date();
alert(selectedDate); // Sun Apr 05 2015 16:36:07 GMT+0200 (CEST)
var startDate = getDateFromDateAtHourOfDay(selectedDate, hour);
alert(hour); // 8
alert(startDate); // Thu Mar 05 2015 08:00:00 GMT+0100 (CET)
document.getElementById("datumLabel").innerHTML = getDateDescriptionFromDate(startDate); // 05.01.2015
答案 0 :(得分:0)
我不知道为什么你对selectedDate
返回的内容感到惊讶。您只需将其设置为new Date()
(现在)。代码中没有任何东西可以从创建的角度来操作这个变量。
然而,您正在操纵值并将更改存储在startDate
和dateLabel.innerHTML
中。您只会注意到格式,因为第二个函数会删除“时间”中的任何更改(由第一个函数完成)。
因此,简而言之:您创建一个日期(现在),更改时间,然后将其格式化为仅显示日期。
var selectedDate = new Date();
//selectedDate value = the date and time right now
var startDate = getDateFromDateAtHourOfDay(selectedDate, hour);
//startDate value = whatever selectedDate was + hours sent as parameter
document.getElementById("dateLabel").innerHTML = getDateDescriptionFromDate(startDate);
//Formatted value of startDate, to only show date
根据评论:
您错过了javascript中的month
从零开始。所以你必须做类似的事情:
var month = date.getMonth() + 1; //in the second function
function getDateFromDateAtHourOfDay(date, hour)
{
var year = date.getFullYear();
var month = date.getMonth();
var day = date.getDate();
var newDate = new Date(year, month, day, hour, 0, 0);
return (newDate);
}
function getDateDescriptionFromDate(date)
{
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
return ( (day < 10 ? ("0" + day) : (day)) + "." + (month < 10 ? ("0" + month) : (month)) + "." + year);
}
var selectedDate = new Date(); // normally function parameter
var startDate = getDateFromDateAtHourOfDay(selectedDate, 15);
document.getElementById("dateLabel").innerHTML = 'Your current system date: ' + getDateDescriptionFromDate(startDate);
<div id="dateLabel"></div>
答案 1 :(得分:0)
如果您尝试这样做,这应该为您提供保存和标签的值,您用于标签的值不同于您尝试使用警报的值。
selectedDate = new Date();
alert(selectedDate); // Sun Apr 05 2015 16:36:07 GMT+0200 (CEST)
var startDate = getDateFromDateAtHourOfDay(selectedDate, hour);
alert(hour); // 8
alert(startDate); // Thu Mar 05 2015 08:00:00 GMT+0100 (CET)
var startDateDesc = getDateDescriptionFromDate(startDate);
alert(startDateDesc) // 05.01.2015
document.getElementById("datumLabel").innerHTML = startDateDesc; // 05.01.2015