【问题标题】:Dijit/form/DateTextBox doesn't like year 2033 onwardsDijit/form/DateTextBox 不喜欢 2033 年以后
【发布时间】:2013-08-01 15:08:11
【问题描述】:

我正在尝试创建一个接受 mm/yy 的文本框。出于某种原因,这不喜欢 2032 年以后的日期。谁能告诉我为什么不喜欢以及解决方案是什么?

更新:问题似乎是严格意义上的 2 位数年份问题。

<input type="text" class="miniTextBox" id="${id}_Date" name="${id}_Date" maxlength="5"
 data-dojo-attach-point="indate"
 data-dojo-type="dijit/form/DateTextBox"  
 data-dojo-props="constraints:{fullYear: false, datePattern: 'MM/yy', max: '2099-12-31'},
 popupClass: 'dojox.widget.MonthAndYearlyCalendar'" 
 promptMessage="Example: 10/14" />

如果有任何不同,以下信息可能会有所帮助:

  • 使用 Dojo 1.8
  • 这是小部件模板的一部分
  • 对此小部件进行了 postCreate 修改,以将 fullYear 约束设置为 false。
  • 它不使用标准的弹出日历,无论是弹出日期还是文本框输入日期都没有关系。
  • 问题似乎是严格意义上的 2 位数年份格式问题 - 当日期格式更改为 MM/yyyy 并且 fullYear 为 true 时,它​​可以正常工作。

【问题讨论】:

  • 我在jsfiddle.net/psoares/pMD3S 中尝试过,但没有发现问题。您的浏览器区域设置是什么?
  • en - GMT+1:00 我认为问题可能在于您的小部件没有将日期设置为 2 位数年份表示 - 我明天将修改您的 jsFiddle 以演示问题更好。

标签: javascript dojo year2038


【解决方案1】:

如果有人仍然想知道,这是预期的行为。见documentation

当使用两位数年份时,对于 yy 和 yyyy 模式,根据当前年份前 80 年和后 20 年的滑动窗口选择世纪。

2033 刚好在 2013 年的那个窗口之外,而 33 被解释为 1933。

【讨论】:

  • 感谢您访问了一个我已经忘记的问题 :)。当时我在一家金融机构工作,可能只想要那个特定日期选择器实例的未来日期。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多