angular-pickadate timezone - selectedDate是其他时区的模态日期前一天

时间:2017-06-13 09:40:31

标签: angularjs datetime timezone

angular-pickadate适用于我当地时间。为了查看全球时间,我已将时区更改为" America / Denver"。现在选择日期是在今天的日期前一天(通过模式日期),所以它适用于#34; pickadate-active"上课到昨天 我尝试使用本地时区和UTC时区传递模态日期。我不知道为什么dateHelper.parseDate再次调用先前传递的剥离时区值,现在我的理解是$ locale正在转换剥离日期,假设它是UTC日期到本地日期。因此,在格林威治标准时间-06:00之前,选定的日期是在一个日期之前。

HTML DIV - <div pickadate ng-model="vm.date" ng-model-options="{ debounce: 0 }" header="true" select="true" date-highlight-list="vm.dateList" ></div>

控制器 - vm.date = moment().tz(timeZoneName).format();

有人可以建议使用angular-pickadate处理不同时区的方法吗?谢谢 !
GIT指令网址 - https://github.com/restorando/angular-pickadate

1 个答案:

答案 0 :(得分:3)

parseDate函数按照GMT时区给出日期对象,所以日期变得少了一天。所以我删除了这个条件,它直接返回带有时区的传递日期字符串的GMT日期。

if (angular.isDate(dateString) || angular.isDate(new Date(dateString))) {
new Date(dateString); }

现在转到下一个if if用regex格式化日期并在那里添加这个条件来处理日期字符串和日期对象 -

if(typeof dateString == 'object') {
  dateString = (dateString['_d'])? dateString['_d']: dateString['_i'];  // being private (_d, _i) should be avoided but only way in mine case
  if(typeof dateString == 'object')  // returns Object by dateString['_d'] else string 
    dateString = dateString.getDate() +'-'+ dateString.getMonth() +'-' +dateString.getFullYear(); 
}

dateParts   = dateString.split(separator); // separator was "-" every time so making dateString with "-" in case it was object