如何以给定格式从 dijit.form.DateTextBox 获取日期?

Posted

技术标签:

【中文标题】如何以给定格式从 dijit.form.DateTextBox 获取日期?【英文标题】:How to get date from dijit.form.DateTextBox in given format? 【发布时间】:2011-04-12 12:28:27 【问题描述】:

我在 html 文件中有一个 dojo 文本框。现在我想以字符串格式“yyyy-mm-dd”从文本框中检索日期。我该怎么做?

  dojoType="dijit.form.DateTextBox"

我该怎么做?

【问题讨论】:

【参考方案1】:

假设您使用dijit.byId(...)dijit.byNode(dojo.query(...)) 之类的方式引用widget 到您的DateTextBox 小部件,这将获取javascript Date 对象并根据ISO 8601 标准(yyyy-mm-dd) 对其进行格式化,独立您碰巧使用的显示器或区域设置

 dojo.require('dojo.date.stamp');
 ...
 var dateObject = widget.get('value');
 var isoFormat = dojo.date.stamp.toISOString(dateObject, selector: 'date');

【讨论】:

【参考方案2】:

试试这个: HTML:

<input type="text" name="date1" id="date1" value="2005-12-30"
   dojotype="dijit.form.DateTextBox" required="true" />

要获得显示的值,您可以使用日期文本框的这种方法:

// get widget:
    var dtb = dijit.byId('date1');
// get value
    alert(dtb.get('displayedValue'));

注意*

Dojo 根据用户区域设置日期格式。

如果您可以使用与用户区域设置格式不同的格式,则需要为日期文本框指定约束属性。

<input type="text" name="date1" id="date1" value="2005-12-30" 
  constraints="datePattern:'yyyy-MM-dd', strict:true" 
  dojotype="dijit.form.DateTextBox" required="true" />

HTML Page - example

【讨论】:

您无需将视觉显示更改为 yyyy-mm-dd 即可实现此目的。 Dojo 保持 Date 属性独立于 displayValue @peller:是的,我知道。但是,如果我理解正确,目标是以正确的格式从文本框中获取值(例如,发送到服务器),而不是更改显示格式。我也认为手动更改日期格式是不好的做法。显示日期取决于用户的文化。【参考方案3】:

这是一个老问题,但您可以使用小部件的toString method。

var isoString = dijit.byId(widgetId).toString();

【讨论】:

以上是关于如何以给定格式从 dijit.form.DateTextBox 获取日期?的主要内容,如果未能解决你的问题,请参考以下文章

以 YYYYMMDD 格式计算给定出生日期的年龄

如何将 DateTime 转换为/从特定的字符串格式(两种方式,例如给定格式为“yyyyMMdd”)?

如果给定的数据在使用 R 或 Python 的范围(-1 到 1)内,如何以 (-3 ,-2,-1,0,1,2,3) 格式规范化数据?

如何从数组中找到精确的(最小)元素以匹配给定的总和

如何从给定日期获得一个月的整数并打印为月份名称格式(“MMM”)

如何使用给定的存储路径打开任何格式的文件