JavaScript日期格式显示错误

JavaScript日期格式显示错误,javascript,date,datetime,date-format,Javascript,Date,Datetime,Date Format,我有一个API,它提供了日期格式,如01/04/2020 00:17:26,我们使用的JavaScript代码如下: function getLocalTime(timestamp){ try { let localTime = new Date(timestamp.replace('at ','') + ' GMT+530'); return localTime; } catch(e){ return timestamp;

我有一个API,它提供了日期格式,如01/04/2020 00:17:26,我们使用的JavaScript代码如下:

function getLocalTime(timestamp){
    try {
        let localTime = new Date(timestamp.replace('at ','') + ' GMT+530');
        return localTime;
    } catch(e){
        return timestamp;
    }
}

vat date = getLocalTime('01/04/2020 00:17:26');
console.log(date);
上述代码返回的是星期六2020年1月4日00:17:26 GMT+0530印度标准时间,但预期结果与星期三2020年4月1日00:17:26 GMT+0530印度标准时间相同


请帮助我们。

问题在于您使用的日期格式错误

您的格式:DD/MM/YYYY

预期格式:MM/DD/YYYY

但是,如果您希望用户输入的格式是DD/MM/YYYY,例如01/04/2020 00:17:26,那么您可以使用regex提取日期信息,如下所示

函数getLocalTimetimestamp{ 试一试{ const datePart=timestamp.match/^\d{2}\/\d{2}\/\d{4}/; 常数日=日期部分[1]; //月份从0到11 const month=datePart[2]-1; const year=日期部分[3]; const localTime=new Datetimestamp。替换为'at',+'GMT+0530'; localTime.setFullYearyear; localTime.setMonthmonth; localTime.setDateday; 返回本地时间; }抓住{ 返回时间戳; } } const date=getLocalTime'01/04/2020 00:17:26';
console.logdate;这回答了你的问题吗?这不清楚,时间戳应该是UTC时间吗?格林尼治标准时间不存在anymore@MisterJojo-出于所有实际目的,在ECMAScript中,GMT===UTC。使用内置解析器是一个糟糕的开始,单独设置值会使情况变得更糟。更好的方法是使用timestamp.match/\d+/g提取部分,并使用日期构造函数调用new Dateyear,month-1,day,。@RobG您的建议timestamp.match/\d+/g不会提供“01/04/2020 00:17:26”的所有匹配项。match/\d+/您将得到[01,索引:0,输入:01/04/2020 00:17:26,组:未定义]作为结果。另外,请注意偏移量GMT+0530,在构建本地时间时也应考虑该偏移量。否则你会怎么处理那部分?我不想在这个问题上花费太多时间,所以只使用了现有的代码库。单独设置这些值会使问题变得更糟吗?为什么呢它可能打算单独设置这些值,以使代码对OP具有可读性。这与将值直接传递给构造函数没有什么不同。但是,将其描述为使事情变得更糟实际上是没有道理的。使用内置解析器意味着像31/03/2020 00:17:26这样的日期很可能会返回无效日期,因此会破坏时间部分。另见。timestamp.match/\d+/g将匹配一个或多个数字的组,因此“01/04/2020 00:17:26”。match/\d+/g将返回数组['01'、'04'、'2020'、'00'、'17'、'26'],这是直接调用日期构造函数以创建2020-04-01 00:17:26的日期所需的所有内容。偏移量+5:30可以同时应用。考虑B=‘01/04/2020∶00∶17:26’。新的DateDate.UTCb[2],b[1]-1,b[0],b[3]-5,b[4]-30,b[5],它根据部件构建日期,同时应用时区偏移。