角度选择日期时区 - 选定日期是其他时区的模态日期的前一天



angular-pickadate适用于我的当地时间。为了查看环球时报,我已将时区更改为"美国/丹佛"。现在选择的日期是在今天的日期(通过模态日期(的前一天获取的,因此它将"pickadate-active"类应用于昨天。
我尝试使用本地时区和 UTC 时区传递模态日期。我不知道为什么 dateHelper.parseDate 再次调用之前传递的剥离时区值,现在我的理解是$locale正在将剥离日期转换为本地日期,假设它是 UTC 日期到本地日期。因此,作为GMT-06:00,所选日期是之前的一个日期。

网页分类 - <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();

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

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

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

现在它转到下一个 if 块以使用正则表达式格式化日期,并在那里添加此条件来处理日期字符串和日期对象 -

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

最新更新