首页 > 解决方案 > Ember.js - ember-pikaday 不解析美国日期?

问题描述

我正在尝试通过我们正在运行的 geb 测试在网站上传递一个替换日期选择器。

它在处理美国模拟测试时失败了

{{pikaday-input
  value=localisedValue
  format=(if format format "DD/MM/YYYY")
  name=name
  placeholder=localisedPlaceholder
  onSelection=(action setValue)
  id=inputId
  classNames="date-placeholder"
  tabindex=tabIndex
}}

日期.js

import LocalisedTextInput from './localised-text-input';

export default LocalisedTextInput.extend({
  setValue(dateValue) {
    if(dateValue) {
      let valueFormat = this.get('valueFormat') ? this.get('valueFormat') : 'YYYY-MM-DD';

      if(valueFormat !== 'date') {
        dateValue = window.moment(dateValue).format(valueFormat);
      }
      else {
        dateValue = window.moment(dateValue);
      }
    }

    this.set('localisedValue', dateValue);
  }
});

和测试

def "Agenda Day renders correctly in the US"() {
    given:
        bootstrapPublishedTestEvent()

    and:
        def page = asyncTo EditAgendaPage, siteUnderTest

    when:
        page.mockTimeZone(420)
        page.addDay('20/02/2016', 'Day 1')

    then:

        page.days*.date == ["20/02/2016"]
}

当我注释掉 page.mockTimeZone(420) - 测试通过。

mockTimeZone 正在使用 TimeShift.js 库

Date = TimeShift.Date;
TimeShift.setTimezoneOffset(420);   

有一个错误,如果来自服务器的日期是 31/12/2019 - 在英国时区它是正确的 - 但在美国时区它显示为 30/12/2019

标签: ember.js

解决方案


推荐阅读