【问题标题】:Date and time widget in DojoDojo 中的日期和时间小部件
【发布时间】:2026-02-05 10:50:01
【问题描述】:

Dojo 有两个小部件:

注意:我正在以编程方式使用 Dojo。

我希望用户输入日期和时间,然后向服务器发送批次的“混合”值(即那个日期+时间)。

我意识到我需要操作submt() 之前的两个值。有没有既定的方法来做到这一点?当然,我不是这个星球上唯一需要简单日期/时间表格的人吗?

【问题讨论】:

    标签: javascript date time dojo


    【解决方案1】:

    好吧,如果你使用:

    registry.byId("myTimeTxtBox").get("value");
    

    您会得到一个包含时间值的Date 对象,而日期就是纪元本身。这意味着如果您选择 1 AM,它将返回 01-01-1970 01:00:00 的时间。 然后,您可以检索 unix 时间戳(自 01-01-1970 00:00:00 以来的毫秒数),这将为您提供以毫秒为单位的时间量:

    var timeEpoch = registry.byId("myTimeTxtBox").get("value").getTime();
    

    如果您对日期文本框执行相同操作:

    var dateEpoch = registry.byId("myDateTxtBox").get("value").getTime();
    

    将两者相加,您将获得日期 + 时间的 UNIX 时间戳,将其转换回 Date 对象也很容易:

    new Date(dateEpoch + timeEpoch);
    

    我还做了一个小JSFiddle来演示。

    【讨论】:

    • 谢谢!我认为随着时间的推移,这个答案你会得到很多支持!
    • 不行!这样做 1) 将您的时区设置为罗马。 2) 设置为日期 02/04/2014 3) 设置为时间 1:42。现在,一个事实:1:42 罗马时间是 11:42 UTC 时间。但是,您小提琴的结果是Wed Apr 02 2014 00:42:00 GMT+0200 (CEST) ,实际上是 10:42 UTC 时间!问题是时间也有一个时区。我在这里修好了小提琴:jsfiddle.net/FjuCa/1我错过了什么吗?