我的任务是为JSON数据库中的数据构建前端。使用日期时,信息以以下格式存储:
16年12月31日
我需要分别使用这些值中的每一个。有没有办法获得这样的变量?:
var month = 12
var day = 31
var year = 16
答案 0 :(得分:2)
如果您想验证日期原始值以及支持不同文化的代码,请使用时刻js。
你的例子:
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;
这是一个时间&amp; date js框架,允许解析和格式化日期和根据模式和时间的时间语言环境 这是我所知道的最好的
答案 1 :(得分:1)
假设您的日期是一个字符串。您可以按/
拆分它,这将产生一个数组。之后使用数组索引来获取值
var _date = "12/31/16",
splitDate = _date.split("/"),
month = splitDate[0],
day = splitDate[1],
year = splitDate[2];
console.log(month, day, year)
&#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日期格式,并将在即将发布的主要版本中删除。