【问题标题】:input date month by name按名称输入日期月份
【发布时间】:2017-02-04 22:59:38
【问题描述】:

你好,我有这个输入日期,有一些小的变化: - 从明天开始可用的日子 - 明天的默认日期 - 和日期格式 dd/mm/yyyy

$(document).ready(function() {
  var now = new Date();
  var day = ("0" + (now.getDate() + 1)).slice(-2);
  var month = ("0" + (now.getMonth() + 1)).slice(-2);
  var today = now.getFullYear() + "-" + (month) + "-" + (day);
  $('.dateD').val(today).attr("min", today);
});

但我需要月份作为名称而不是数字,一月、二月等......

所以日期应该是:04/February/2017

这里是例子: http://jsbin.com/rovuliyere/edit?html,js,output

谢谢!

【问题讨论】:

  • 可以使用jquery-dateFormat github.com/phstc/jquery-dateFormat
  • 我通常会推荐使用那些已经推荐的库,或者 Moment.js。但是,如果您正在做的事情真的很小,那么开销可能不值得。也许这会有所帮助:var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; months[now.getMonth() -1]
  • "所以日期应该是:04/February/2017" 但根据您的格式,它应该是 2017-February-04。

标签: javascript date input


【解决方案1】:

您可以为此使用Internationalization API。这个 sn-p 只适用于现代浏览器。见browser compability

var locale = "en-us",
month = now.toLocaleString(locale, { month: "long" });

工作示例:http://jsbin.com/bifagurege/1/edit?html,js,output

【讨论】:

  • 虽然 toLocaleString 的选项仅在最近的浏览器中受支持,例如IE 11、Safari 10,请参阅MDN browser compatibility matrix
  • 是的,没错。但这对我的代码有什么影响吗?
  • 只有在缺少支持的情况下才会出现意想不到的结果(例如“05/02/2017, 2:10:32 am”)并且会因浏览器而异。
  • 是的,我完全同意你的看法。即使我认为这不是一个好主意,但由于有人已经用数组给出了更好的解决方案,所以我想我可以分享给他。
【解决方案2】:

您可以尝试使用 datepicker 进行格式化:

https://jqueryui.com/datepicker/

【讨论】:

  • 我知道 datepicker,但我的想法是不要使用额外的库!
【解决方案3】:

所以日期应该是:04/February/2017

无法设置(更改)<input type="date" /> 的自定义格式。它需要一个完整的日期格式,等于:yyyy-mm-dd
要以 dd/Month/yy 格式呈现当前日期,请使用以下带有 Date.prototype.toLocaleString() 的简短解决方案:

var now = new Date(),
  day = ("0" + (now.getDate())).slice(-2),
  // the first argument 'en-us' is a locale(you can adjust it)
  today = day + '/' 
          + now.toLocaleString('en-us', { month: "long" }) 
          + "/" + now.getFullYear();
  
$('.dateD').val(today).attr("min", today);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="dateD" type="text" readonly='true'/>

【讨论】:

  • toLocaleString 的第一个参数是一种语言,“en-us”是一种方言。如果省略,则使用浏览器的默认语言,这可能更适合(并且是 toLocaleString 存在的主要原因)。
猜你喜欢
  • 1970-01-01
  • 2020-12-07
  • 1970-01-01
  • 2021-08-21
  • 2010-12-11
  • 1970-01-01
  • 1970-01-01
  • 2018-08-26
相关资源
最近更新 更多