Sha*_*een 44 javascript asp.net jquery date
可能重复:
扩展JavaScript的Date.parse以允许DD/MM/YYYY(非美国格式的日期)?
将dd-mm-yyyy字符串转换为日期
在文本框中输入日期,例如:05/09/1985,我想将其转换为1985年9月5日(dd-MMM-yyyy)格式.我怎么做到这一点?请注意,源格式可以是dd-mm-yyyy或dd/mm/yyyy或dd-mmm-yyyy格式.
代码片段:
function GetDateFormat(controlName) {
if ($('#' + controlName).val() != "") {
var d1 = Date.parse($('#' + controlName).val());
if (d1 == null) {
alert('Date Invalid.');
$('#' + controlName).val("");
}
var array = d1.toString('dd-MMM-yyyy');
$('#' + controlName).val(array);
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码将于1985年5月9日返回,但我希望在1985年9月5日.谢谢.
小智 60
您可能希望使用http://momentjs.com/这样的帮助程序库,它包装了本机javascript日期对象,以便于操作
然后你可以做以下事情:
var day = moment("12-25-1995", "MM-DD-YYYY");
Run Code Online (Sandbox Code Playgroud)
要么
var day = moment("25/12/1995", "DD/MM/YYYY");
Run Code Online (Sandbox Code Playgroud)
然后在日期运作
day.add('days', 7)
Run Code Online (Sandbox Code Playgroud)
并获得原生的javascript日期
day.toDate();
Run Code Online (Sandbox Code Playgroud)
T.J*_*der 46
更新
你刚才说:
对不起,我以前无法预测日期格式,它应该像dd-mm-yyyy或dd/mm/yyyy或dd-mmm-yyyy格式最后我想将所有这些格式转换为dd-MMM-yyyy格式.
这完全改变了这个问题.如果你无法控制格式,那将会复杂得多.JavaScript中没有任何内容可以让您指定日期格式.正式来说,JavaScript支持的唯一日期格式是ISO-8601的简化版本:yyyy-mm-dd虽然在实践中几乎所有浏览器也都支持yyyy/mm/dd.但除此之外,你必须自己编写代码或(这更有意义)使用一个好的库.我可能会使用像moment.js或DateJS这样的库(虽然DateJS几年没有维护).
原始答案:
如果格式总是如此 dd/mm/yyyy,那么这是微不足道的:
var parts = str.split("/");
var dt = new Date(parseInt(parts[2], 10),
parseInt(parts[1], 10) - 1,
parseInt(parts[0], 10));
Run Code Online (Sandbox Code Playgroud)
split在给定的分隔符上拆分字符串.然后我们使用parseInt将字符串转换为数字,并使用new Date构造函数Date从这些部分构建:第三部分是年份,第二部分是月份,第一部分是一天.Date使用从零开始的月份数字,因此我们必须从月份数中减去一个.
Jon*_*Jon 10
Date.parse仅识别特定格式,并且您无法告诉它输入格式是什么.在这种情况下,它认为输入是格式mm/dd/yyyy,因此结果是错误的.
为了解决这个问题,你需要或者解析自己的输入(例如用String.split),然后手动构造一个Date对象,或使用功能更齐全的图书馆,如datejs.
手动解析的示例:
var input = $('#' + controlName).val();
var parts = str.split("/");
var d1 = new Date(Number(parts[2]), Number(parts[1]) - 1, Number(parts[0]));
Run Code Online (Sandbox Code Playgroud)
使用date.js的示例:
var input = $('#' + controlName).val();
var d1 = Date.parseExact(input, "d/M/yyyy");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
169368 次 |
| 最近记录: |