我正在使用 ui-calendar,我试图在没有时间的情况下传递事件。现在我得到的日期和时间是这样的。
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
var WOD = new Date(y,m,d);
现在我还有一个功能,可以将 WOD 更改为在日历的月 View 中选择的日期,如下所示。
$scope.alertOnDayClick = function(d){
WOD = d;
};
如果我点击一天(本例为 2015 年 1 月 22 日)WOD = "2015-01-22T00:00:00.000Z"
<--这就是我想要的并且效果很好。
但是如果我默认不选择某一天WOD = "2015-01-04T05:00:00.000Z"
我想让我的默认日期包含时间 T00:00:00.000Z。
我已经尝试过
var WOD = new Date(y,m,d,0,0,0,0)
var WOD = date.UTF(y,m,d)
var WOD = date.UTF(y,m,d,0,0,0,0)
我还尝试将默认时间设置为空 我读了这个问题 Dealing with DateTime format for international application 但我不知道这是否适用,而且老实说我并没有完全理解如何实现它
感谢所有帮助。
更新:
读完后 What is the best way to initialize a JavaScript Date to midnight?
我试过了
var WOD = new Date();
WOD.setHours(0,0,0,0);
但它仍然返回“2015-01-04T05:00:00.000Z”
这使得事件存储在 1 月 4 日中午 12 点
更新:
我尝试过:
$scope.WOD = new Date();
$scope.WOD.setHours(0, 0, 0, 0);
$scope.dangerMessage = ($scope.WOD);
{{dangerMessage}} = "2015-01-04T05:00:00.000Z"
使用完整 Controller 更新
var myAppModule = angular.module('MyApp', ['ui.calendar']);
myAppModule.controller('MyController', function($scope,$compile,uiCalendarConfig) {
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
$scope.WOD = new Date();
$scope.WOD.setHours(0, 0, 0, 0);
$scope.events = [
{title: 'All Day Event', start: new Date(y, m, 1)},
{title: 'Long Event', start: new Date(y, m, d), end: new Date(y, m, d)},
{id: 999, title: 'Repeating Event', start: new Date(y, m, d - 3, 16, 0), allDay: false},
{id: 999, title: 'Repeating Event', start: new Date(y, m, d + 4, 16, 0), allDay: false},
{
title: 'Birthday Party',
start: new Date(y, m, d + 1, 19, 0),
end: new Date(y, m, d + 1, 22, 30),
allDay: false
},
{title: 'Click for Google', start: new Date(y, m, 28), end: new Date(y, m, 29), url: 'http://google.com/'}
];
$scope.addEvent = function() {
if($scope.WOD === ''){
$scope.dangerMessage = ('Please Choose a Date');
}else{
$scope.events.push({
title: 'Open Sesame',
start: $scope.WOD,
end: $scope.WOD,
className: ['openSesame']
});
}
$scope.dangerMessage = ($scope.WOD);
};
$scope.alertOnEventClick = function( date ){
$scope.alertMessage = (date.title + ' was clicked ');
};
$scope.alertOnDayClick = function(d){
uiCalendarConfig.calendars['CalDayView'].fullCalendar('gotoDate', d);
WOD = d;
$scope.dangerMessage = (WOD);
};
/* remove event */
$scope.remove = function(index) {
$scope.events.splice(index,1);
};
/* config object */
$scope.uiDayConfig = {
calendar:{
height: 450,
editable: true,
header:{
left: 'today',
center: 'title',
right: 'prev,next'
},
timeFormat: '',
defaultView: 'basicDay',
defaultDate: new Date(),
eventDrop: $scope.alertOnDrop,
eventResize: $scope.alertOnResize,
eventClick: $scope.alertOnEventClick,
eventRender: $scope.eventRender
}
};
$scope.uiMonthConfig = {
calendar:{
height: 450,
editable: true,
header:{
left: 'prev,next',
center: 'title',
right: 'basicWeek'
},
dayClick: $scope.alertOnDayClick,
//eventDrop: $scope.alertOnDrop,
//eventResize: $scope.alertOnResize,
eventClick: $scope.alertOnEventClick
//eventRender: $scope.eventRender
}
};
$scope.eventSources = [$scope.events];
});//END MYCONTROLLER
最佳答案
我认为您的时区时间为+5 小时。
var WOD = new Date();
WOD.setHours(0,0,0,0);// Sun Jan 04 2015 00:00:00 GMT-0600 (CST)
var WOD = new Date();
WOD.setUTCHours(0,0,0,0);// Sat Jan 03 2015 18:00:00 GMT-0600 (CST)
您机器的设置存在所有差异。检查“时区”的设置。
关于javascript - 如何使用 JS 将时间设置为 T00 :00:00. 000Z,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27769608/