Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从日期字符串以UTC格式正确计算日期时间_Javascript_Date_Datetime - Fatal编程技术网

Javascript 从日期字符串以UTC格式正确计算日期时间

Javascript 从日期字符串以UTC格式正确计算日期时间,javascript,date,datetime,Javascript,Date,Datetime,我试图用UTC计算日期时间,我有下面的代码和使用 weeklyDish.orderBeforeTime=时区UTC( “欧洲/阿姆斯特丹”, 年, 月, 白天 小时 ); 功能时区UTC(时区、年、月、日、小时){ const dateObj=`${year}-${month}-${day}${hours}:00`; const datetime=datetime.fromFormat(dateObj,“yyyy-M-d H:mm”{ 时区, }); return datetime.toUTC(

我试图用UTC计算日期时间,我有下面的代码和使用

weeklyDish.orderBeforeTime=时区UTC(
“欧洲/阿姆斯特丹”,
年,
月,
白天
小时
);
功能时区UTC(时区、年、月、日、小时){
const dateObj=`${year}-${month}-${day}${hours}:00`;
const datetime=datetime.fromFormat(dateObj,“yyyy-M-d H:mm”{
时区,
});
return datetime.toUTC().toString();
}
上面的代码总是返回错误的时间

  • 如何获取年、月、小时并返回UTC字符串以保存在数据库中
  • 我将迁移日期为字符串的数据(例如:“2020-12-13”),如何将其转换为UTC日期并正确减去天数

  • 如果已解析日期,则可以使用。但是,构造函数取决于本地时区,幸运的是您可以使用

    棘手的部分是关于时区的,它在构造函数中不受支持,但无论如何,它只是一个简单的加法

    所以我敢打赌这样的方法应该会奏效:

    功能时区UTC(时区、年、月、日、小时){
    返回新日期(Date.UTC(年、月-1、日、小时+时区));
    }
    
    注意:month参数是一个索引(基于0),因此如果1=一月,则需要将月份减少1(如我的示例所示)


    编辑:呃,显然,
    日期。UTC
    返回时间戳,因此您仍然需要使用构造函数。

    您需要展示一个示例来演示您的问题。下面显示了Luxon的UTC和setZone方法的使用,这两种方法似乎都能正确地转换“欧洲/阿姆斯特丹”的日期集

    请注意,传递给DateTime.fromISO的字符串必须形成有效的ISO 8601时间戳,如YYYY-MM-DDTHH

    let DateTime=luxon.DateTime;
    让[tz,y,m,d,h]=[“欧洲/阿姆斯特丹”,“2020”,“11”,“30”,“12'];
    让date=DateTime.fromso(`y}-${m}-${d}T${h}`,{zone:“欧洲/阿姆斯特丹”});
    console.log(tz+'\n'+date.toString());
    设dateUTC=date.setZone('UTC');
    log('setZone to UTC\n'+dateUTC.toString());
    设dateUTC2=date.toUTC();
    log('toUTC方法\n'+dateUTC2.toString())
    
    所谓的时区,如“欧洲/阿姆斯特丹”没有固定的偏移量,通常也必须考虑夏令时。即使在不遵守夏令时的情况下,也几乎肯定会有历史偏移量的变化,所以这不仅仅是添加固定偏移量的问题。这一点很好!有那么一会儿,我以为他通过的是偏移量,而不是区域。谢谢@RobG,但是当我给它发送这样一个日期时,
    let[tz,y,m,d,h]=[“欧洲/阿姆斯特丹”,2020,2,5,4]
    i get
    Invalid DateTime
    对不起,月份、日期等需要两位数的值,以便在连接时形成有效的ISO 8601时间戳,因此
    let[tz,y,m,d,h]=[“欧洲/阿姆斯特丹”,“2020”,“02”,“05”,“04”]