use*_*142 173 javascript date
我正在尝试使用以下格式将dd-mm-yyyy格式的字符串转换为JavaScript中的日期对象:
var from = $("#datepicker").val();
var to = $("#datepickertwo").val();
var f = new Date(from);
var t = new Date(to);
Run Code Online (Sandbox Code Playgroud)
("#datepicker").val()
包含dd-mm-yyyy格式的日期.当我执行以下操作时,我会收到"无效日期":
alert(f);
Run Code Online (Sandbox Code Playgroud)
这是因为' - '符号吗?我怎么能克服这个?
Adr*_*nch 297
拆分" - "
将字符串解析为您需要的部分:
var from = $("#datepicker").val().split("-")
var f = new Date(from[2], from[1] - 1, from[0])
Run Code Online (Sandbox Code Playgroud)
使用正则表达式
var date = new Date("15-05-2018".replace( /(\d{2})-(\d{2})-(\d{4})/, "$2/$1/$3"))
Run Code Online (Sandbox Code Playgroud)
为什么不使用正则表达式?
因为你知道你将使用由连字符分隔的三个部分组成的字符串.
但是,如果你在另一个字符串中寻找相同的字符串,那么正则表达式就是你要走的路.
重用
因为您在示例代码中执行此操作不止一次,并且可能在代码库中的其他位置执行此操作,所以将其包装在函数中:
function toDate(dateStr) {
var parts = dateStr.split("-")
return new Date(parts[2], parts[1] - 1, parts[0])
}
Run Code Online (Sandbox Code Playgroud)
用作:
var from = $("#datepicker").val()
var to = $("#datepickertwo").val()
var f = toDate(from)
var t = toDate(to)
Run Code Online (Sandbox Code Playgroud)
或者如果你不介意你的函数中的jQuery:
function toDate(selector) {
var from = $(selector).val().split("-")
return new Date(from[2], from[1] - 1, from[0])
}
Run Code Online (Sandbox Code Playgroud)
用作:
var f = toDate("#datepicker")
var t = toDate("#datepickertwo")
Run Code Online (Sandbox Code Playgroud)
现代JavaScript
如果你能够使用更现代的JS,阵列解构也是一个不错的选择:
const toDate = (dateStr) => {
const [day, month, year] = dateStr.split("-")
return new Date(year, month - 1, day)
}
Run Code Online (Sandbox Code Playgroud)
epa*_*llo 133
正则表达式示例:
new Date( "13-01-2011".replace( /(\d{2})-(\d{2})-(\d{4})/, "$2/$1/$3") );
Run Code Online (Sandbox Code Playgroud)
Joe*_*Joe 14
另一种可能性
var from = "10-11-2011";
var numbers = from.match(/\d+/g);
var date = new Date(numbers[2], numbers[0]-1, numbers[1]);
Run Code Online (Sandbox Code Playgroud)
匹配数字并重新排序
使用以下格式: myDate = new Date('2011-01-03'); // Mon Jan 03 2011 00:00:00
var from = $("#datepicker").val();
var f = $.datepicker.parseDate("d-m-Y", from);
Run Code Online (Sandbox Code Playgroud)
使用moment.js示例:
var from = '11-04-2017' // OR $("#datepicker").val();
var milliseconds = moment(from, "DD-MM-YYYY").format('x');
var f = new Date(milliseconds)
Run Code Online (Sandbox Code Playgroud)