请参阅以下代码;
var d = new Date();
var s = "01.00 AM";
d.setTime(s);
Run Code Online (Sandbox Code Playgroud)
我知道这段代码错了.请给我正确的设置时间的方法.我手里拿着12小时的字符串格式.
时间会有所不同.不知道早些时候会是什么时候.也是12小时的时间.所以它将是AM或PM
the*_*abb 20
您可以使用正则表达式解析时间,并相应地设置小时和分钟:
var d = new Date(),
s = "01.25 PM",
parts = s.match(/(\d+)\.(\d+) (\w+)/),
hours = /am/i.test(parts[3]) ? parseInt(parts[1], 10) : parseInt(parts[1], 10) + 12,
minutes = parseInt(parts[2], 10);
d.setHours(hours);
d.setMinutes(minutes);
alert(d);
Run Code Online (Sandbox Code Playgroud)
编辑1: 正如jaisonDavis指出的那样,原始代码不适用于12.XX的AM或PM,这是一个疏忽,因为我自己从不使用12小时格式,认为它从00.00开始这是错误的.
处理这些情况的更正代码可以在这里看到:
var test, parts, hours, minutes, date,
d = (new Date()).getTime(),
tests = ['01.25 PM', '11.35 PM', '12.45 PM', '01.25 AM', '11.35 AM', '12.45 AM'],
i = tests.length,
timeReg = /(\d+)\.(\d+) (\w+)/;
for(; i-- > 0;) {
test = tests[i];
parts = test.match(timeReg);
hours = /am/i.test(parts[3]) ?
function(am) {return am < 12 ? am : 0}(parseInt(parts[1], 10)) :
function(pm) {return pm < 12 ? pm + 12 : 12}(parseInt(parts[1], 10));
minutes = parseInt(parts[2], 10);
date = new Date(d);
date.setHours(hours);
date.setMinutes(minutes);
console.log(test + ' => ' + date);
}Run Code Online (Sandbox Code Playgroud)
Tra*_*ter 10
我迟到了,但我想我会分享一个不使用正则表达式的功能:
function setDateTime(date, time) {
var index = time.indexOf("."); // replace with ":" for differently displayed time.
var index2 = time.indexOf(" ");
var hours = time.substring(0, index);
var minutes = time.substring(index + 1, index2);
var mer = time.substring(index2 + 1, time.length);
if (mer == "PM"){
hours = hours + 12;
}
date.setHours(hours);
date.setMinutes(minutes);
date.setSeconds("00");
return date;
}
Run Code Online (Sandbox Code Playgroud)
使用moment.js将是简单的解决方案。
const fullDate = new Date();
// fullDate = Tue Dec 12 2017 11:18:30 GMT+0530 (IST) {}
const time = '01.00 AM';
const d = moment(fullDate).format('L'); // d = "12/12/2017"
const date = moment(d +' '+ time).format();
// date = "2017-12-12T01:00:00+05:30"
Run Code Online (Sandbox Code Playgroud)
如果你想将时刻日期转换为js日期
const jsDate = moment(date).toDate();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27998 次 |
| 最近记录: |