将部分日期作为单独的变量

时间:2017-06-29 17:28:47

标签: javascript

我的任务是为JSON数据库中的数据构建前端。使用日期时,信息以以下格式存储:

  

16年12月31日

我需要分别使用这些值中的每一个。有没有办法获得这样的变量?:

var month = 12
var day = 31
var year = 16

3 个答案:

答案 0 :(得分:2)

如果您想验证日期原始值以及支持不同文化的代码,请使用时刻js。

https://momentjs.com

你的例子:



function dateChanged(rawDate) {
  var mydate = moment(rawDate, 'MM/DD/YY');
  $('#day').innerHTML = mydate.date();
  $('#month').innerHTML = mydate.month() + 1; // months are 0 based
  $('#year').innerHTML = mydate.year();
}
document.addEventListener('DOMContentLoaded', function () {
  var input = $('input');
  input.value = '12/31/16';
  dateChanged(input.value);
});
var $ = document.querySelector.bind(document);

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js">
</script>
<input onchange="dateChanged(this.value)" type="text" />
year <span id="year"></span>
month <span id="month"></span>
day <span id="day"></span>
&#13;
&#13;
&#13;

这是一个时间&amp; date js框架,允许解析和格式化日期和根据模式和时间的时间语言环境 这是我所知道的最好的

答案 1 :(得分:1)

假设您的日期是一个字符串。您可以按/拆分它,这将产生一个数组。之后使用数组索引来获取值

&#13;
&#13;
var _date = "12/31/16",
  splitDate = _date.split("/"),
  month = splitDate[0],
  day = splitDate[1],
  year = splitDate[2];
console.log(month, day, year)
&#13;
&#13;
&#13;

答案 2 :(得分:0)

所以我们所有人(除了Matt.C)都错过了你可能想要将YY强迫进入YYYY - 将一年存储为两位数是非常糟糕的做法。

假设所有日期都来自本世纪:

var dateString = "12/31/16";
var [month,day,year] = dateString.split("/"); // very new method
year = "20"+year; // if needed

以上需要解析才能成为数字

旧版更兼容

var dateString = "12/31/16",
    parts = dateString.split("/"),
    month = +parts[0],
    day   = +parts[1], 
    year  = parseInt("20"+parts[2]); // remove "20"+ if not needed

请注意fiddle moment.js 如何不喜欢2位数年份

  

弃用警告:提供的值不是公认的RFC2822或ISO格式。时刻构造回落到js Date(),这在所有浏览器和版本中都不可靠。不鼓励使用非RFC2822 / ISO日期格式,并将在即将发布的主要版本中删除。