我在datepicker問題上遇到了致命的混亂。角度日期選擇器完全錯誤的行爲,如期望
誰能解決我的問題我可以給100分作爲回報。
當我點擊2016-08-23上的日曆時,它會顯示我2016-08-22的日期值。
此外,角度模型中的日期值也不正確。
我想使輸出可以一致。
要重現此車的問題,改變洛杉磯和東京之間
你的時區DEMO網站:https://test.jiyubi.com/tour_package/home
控制器JS
app.controller('tourPackageStartDatePickerCtrl',
function ($scope) {
$scope.initStartDate = function() {
$scope.startDate = $scope.startDate || null;
};
$scope.initStartDate();
$scope.dateOptions = {
baseDate: $scope.startDate,
minDate: $scope.startDate || moment.utc().toDate(),
};
$scope.openStartDateClick = function() {
$scope.startDatePopup.opened = true;
};
});
app.controller('tourPackageEndDatePickerCtrl',
function ($scope, $rootScope) {
$scope.clear = function() {
$scope.endDate = null;
};
$scope.endDateOptions = {
dateDisabled: disabledDays,
baseDate: new Date(),
};
$scope.openEndDateClick = function() {
$scope.endDatePopup.opened = true;
};
$scope.$watch("endDate", function (new_val, old_val) {
if (new_val && moment(new_val).isValid()) {
setTravelDateRange($scope.startDate, $scope.endDate);
}
}, true)
function setTravelDateRange(startDate, endDate) {
var start_date = moment_with_TAIPEI_TZ(startDate).format("YYYY/MM/DD");
var end_date = moment_with_TAIPEI_TZ(endDate).format("YYYY/MM/DD");
moment(startDate.toDateString()).tz("Asia/Taipei").format("YYYY/MM/DD");
$scope.q_param.startDate = start_date;
$scope.q_param.date_range = start_date + "-" + end_date;
}
});
helper.js
function moment_with_TAIPEI_TZ(time){
return moment(time).tz("Asia/Taipei");
}
function MOMENT_WITH_LOCAL(time){
return moment(time).local();
}
function discard_timezone(value) {
return moment.utc(value).format(DEFAULT_MOMENT_TIME_FORMAT);
}
function getYYYYMMDD(value) {
return moment.utc(value).format("YYYY/MM/DD");
}
function date_without_timezone(value) {
return moment.utc(value).toDate();
}
也許這是問題在'時間'而不是'datepicker'。 –
聽起來像是一個時區問題,洛杉磯是UTC-0800,東京目前是UTC + 0900,所以在東京17:00,這是洛杉磯的前一天。 – RobG
它不應該有這個奇怪的問題發生,對吧?這完全是一個錯誤的輸出,雖然它可能與時區:( – newBike