【问题标题】:JS minus 1 day from date inputJS 从日期输入减去 1 天
【发布时间】:2021-12-31 05:05:55
【问题描述】:

无需担心时区或其他任何事情,从我在 JS 表单上的 input=date 到 -1 天的最快和最佳方法是什么,将字符串转换为 YYYY-MM-DD 以便可以对其进行解析和使用发布到 API 等?

从我的 date_to_selector.val() 中可以看到,我的 date_to var 打印字符串“YYYY-MM-DD” - 我需要在新变量中从该字符串中减去 1 天

这是我输入日期“Date To”的代码:

<input type="date" name="date_to" />
var date_to_selector         = $(this).parent().find("input[name=date_to]");
var date_to = date_to_selector.val();

我已经对此进行了研究,许多人建议使用 moment.JS 或 toISOString,但我不想担心时区等问题。

【问题讨论】:

  • 如果您以yyyy-mm-dd 格式获取日期,那么负1 天应该是yyyy-mm-dd-1 并处理如果天的值是0 或9。没什么复杂的。我错过了什么吗?
  • @seriously - 是的。不能那样工作..

标签: javascript html json


【解决方案1】:

您可以获取输入的valueAsDate属性,然后将其日期设置为所选日期减去1的日期:

$('input[type="date"]').change(function(){
  const date = $(this).prop('valueAsDate')
  date.setDate(date.getDate() - 1)
  const res = date.toLocaleDateString('en-US', {year: 'numeric', month: '2-digit', day: '2-digit'}).split('/').join('-');
  console.log(res)
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="date" name="date_to" />

【讨论】:

  • 如何在没有 T00:00:00.000Z 的情况下只输出 YYYY-MM-DD 字符串?
  • @AG9 好的。我再次更新了我的答案以使用toLocaleString
  • 如何使用moment js 就像moment().subtract(1, 'days')@Spectric 一样简单
  • @Spectric - 完美,正是我所需要的,谢谢!使用 toLocaleString - 我是否需要担心时区等问题?
  • @AG9 该错误可能不是由日期解析引起的。看起来您在无效的 JSON 上使用 JSON.parse。你介意分享代码吗?
猜你喜欢
  • 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
相关资源
最近更新 更多