【问题标题】:Problems with new Date() in JSJS 中 new Date() 的问题
【发布时间】:2017-04-09 13:29:03
【问题描述】:

我有一个带有<input type="date"> 的网页,用户可以在其中选择日期。我使用 DOM API 方法获取此日期并创建一个 Date 对象:

article.createdAt = new Date(form.elements['date'].value);

因此我的日期是正确的,但时间总是相同的,00:00。我希望 i 成为用户选择日期的时间,或者至少他能够手动设置时间。

需要一些建议。谢谢你的帮助。

【问题讨论】:

  • 创建另一个不带参数的 Date 实例并复制小时和分钟。
  • @Nikita 你能告诉我你的 HTML 和 JS 代码吗
  • 日期控件返回的实际值是多少?它应该类似于“2017-04-10”。

标签: javascript html date dom


【解决方案1】:

尝试使用datetime-local 而不是date

演示

<p>Click the button to create a Local Datetime field.</p>

<button onclick="myFunction()">Try it</button>

<script>
function myFunction() {
    var x = document.createElement("INPUT");
    x.setAttribute("type", "datetime-local");
    x.setAttribute("default-value", "2015-01-02T11:42:13.510");
    x.setAttribute("value", "2015-01-02T11:42:13.510");
    document.body.appendChild(x);
    alert(x.value);
    alert(new Date(x.value));
}
</script>

【讨论】:

  • 谢谢,可以了。也许你可以告诉我在不考虑我的时区的情况下我应该怎么做才能创建新日期?例如,我输入 04:33 AM 并使用时间 07:33 AM 创建新日期(我的时区是 UTC +3)。
  • 您不必在此处使用.setAttribute()。可以直接设置DOM元素的“type”、“defaultValue”、“value”属性。
  • @NikitaSavanovich 时区是因为 T 在中间。您可以在将输入传递给 Date 构造函数之前删除该 T
  • 纯代码答案没有那么有用。您应该解释您的代码为何或如何解决 OP 的问题。您依靠内置解析器正确解析“2015-01-02T11:42:13.510”,这不是一个好主意。
  • @RobG 基本上答案是将type="date" 替换为type="datetime-local",以便日期对象本身带有时间值。我同意传递日期并不完全正确,但我假设 OP 将解析用户输入的日期而不是设置他自己的日期。
【解决方案2】:

有 4 种发起日期的方式:

  1. 新日期()
  2. 新日期(毫秒)
  3. 新日期(日期字符串)
  4. 新日期(年、月、日、小时、分钟、秒、毫秒)

你可以关注他们,也许你的问题会得到解决。

找出结果作为此代码的字符串form.elements['date'].value 然后你跟着第三个数字。

【讨论】:

  • 我认为您的意思是实例化而不是启动
【解决方案3】:

我认为您没有正确检索日期输入,请检查您的控制台以查看它是否给您任何错误,然后尝试像这样获取您的日期

article.createdAt = new Date(form.querySelector("input[type='date']").value);

【讨论】:

  • 如果控件在表单中,那么要成功,它必须有一个名称,所以form.controlName.value 更加健壮,并且输入更少。 ;-) 此外,这并没有解决获取与日期相关的时间的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-09
  • 1970-01-01
  • 1970-01-01
  • 2017-06-18
  • 2021-09-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多