gpt4 book ai didi

Cordova WP8 上的 Javascript 日期构造函数

转载 作者:行者123 更新时间:2023-11-29 15:23:34 25 4
gpt4 key购买 nike

我有一个格式为 28-Dec-2016 04:25 AM 的日期字符串,需要将其转换为 Date 对象。为此,我首先拆分字符串以获取日期和时间

cDateStringParts = cdate.split(' ');

然后我得到日期和时间组件

cDateParts = cDateStringParts[0].split('-');
cTimeParts = cDateStringParts[1].split(':');

然后我像这样初始化Date对象

if(cDateStringParts[2]=='AM'){
cDateObject = new Date(cDateParts[2], convertToNumericMonth(cDateParts[1]), cDateParts[0], cTimeParts[0], cTimeParts[1], 0, 0);
} else {
cDateObject = new Date(cDateParts[2], convertToNumericMonth(cDateParts[1]), cDateParts[0], complaintTimeParts[0] + 12, cTimeParts[1], 0, 0);
}

其中 convertToNumericMonth() 是一个将 Jan-Dec 转换为 0-11 的函数。但是当我检查 cDateObject.getDate()/getMonth() 时,我没有得到正确的值/getYear()。结果是2017/12/29。

我做错了什么?如果我尝试做 alert(cdate,' ',cDateObject.getFullYear() 我得到这个:

enter image description here

最佳答案

一个问题是如何将 12 小时制转换为 24 小时制。日期部分是字符串,因此对于“03:45 PM”如下:

complaintTimeParts[0] + 12

将返回“0312”。此外,“12:00 AM”应将小时数设置为 0,但您的代码会将小时数设置为 12。

小时可以转换为 24 小时制,方法是先转换为数字,将 12am 转换为 0,如果是 PM,则加 12。如果与其余计算分开进行,也会更简单:

var hr = cTimeParts[0] % 12 + (cDateStringParts[2]=='AM'? 0 : 12);

这里的 mod 运算符 % 会将 cTimeParts[0] 转换为数字。现在函数可以是:

function dateParse(cdate) {
var cDateStringParts = cdate.split(' ');
var cDateParts = cDateStringParts[0].split('-');
var cTimeParts = cDateStringParts[1].split(':');
var hr = cTimeParts[0] % 12 + (cDateStringParts[2]=='AM'? 0 : 12);
return new Date(cDateParts[2], convertToNumericMonth(cDateParts[1]),
cDateParts[0], hr, cTimeParts[1]);
}

function convertToNumericMonth(month) {
return {Jan:0,Feb:1,Mar:2,Apr:3,May:4,Jun:5,Jul:6,
Aug:7,Sep:8,Oct:9,Nov:10,Dec:11}[month];
}

console.log(dateParse('28-Dec-2016 04:25 AM').toString());
console.log(dateParse('28-Dec-2016 04:25 PM').toString());

最后,缺少的部分设置为 0(或日期为 1),因此不需要包含它们。

关于Cordova WP8 上的 Javascript 日期构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41374159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com