javascript - 从日期字符串以 UTC 正确计算日期时间
问题描述
我正在尝试以 UTC 计算日期时间,我有以下代码并使用Luxon
weeklyDish.orderBeforeTime = timeZoneToUTC(
"Europe/Amsterdam",
year,
month,
day,
hours
);
function timeZoneToUTC(timezone, year, month, day, hours) {
const dateObj = `${year}-${month}-${day} ${hours}:00`;
const datetime = DateTime.fromFormat(dateObj, "yyyy-M-d H:mm", {
zone: timezone,
});
return datetime.toUTC().toString();
}
上面的代码总是返回错误的时间。
- 如何获取年、月、小时并返回 UTC 字符串以保存在数据库中?
- 我将迁移日期为字符串的数据(例如:“2020-12-13”),如何将其转换为 UTC 日期并正确减去天数?
解决方案
您需要展示一个示例来证明您的问题。下面显示了 Luxon 的UTC和setZone方法的使用,它们似乎都可以正确转换为“欧洲/阿姆斯特丹”设置的日期。
请注意,传递给DateTime.fromISO的字符串必须形成有效的 ISO 8601 时间戳,例如 YYYY-MM-DDTHH。
let DateTime = luxon.DateTime;
let [tz, y, m, d, h] = ["Europe/Amsterdam", '2020', '11', '30', '12'];
let date = DateTime.fromISO(`${y}-${m}-${d}T${h}`, { zone: "Europe/Amsterdam" });
console.log(tz + '\n' + date.toString());
let dateUTC = date.setZone('UTC');
console.log('setZone to UTC\n' + dateUTC.toString());
let dateUTC2 = date.toUTC();
console.log('toUTC method\n' + dateUTC2.toString());
<script src="https://cdn.jsdelivr.net/npm/luxon@1.25.0/build/global/luxon.min.js"></script>
PS 阿姆斯特丹标准时间是+1,夏令时是+2。
推荐阅读
- node.js - 创建一个支持 https 的 HTTP 代理服务器,并使用另一个代理服务器使用 nodejs 提供响应
- javascript - 由输入值 javascript 制成的 Google Charts 数据数组
- octave - 如何在绘图中仅显示 'n' 刻度日期时间标签或让 octave 为我选择大量刻度?
- laravel - 向 Laravel 验证响应添加状态标志
- wpf - Caliburn 事件未触发
- html - div 之间的标签的有效高度和宽度为 0
- c# - 使用 ubuntu+nginx 从 asp.net 上的站点发送电子邮件
- android - 我什么时候在 DialogFragment 中使用 onCreate?
- sql - 在动态查询中查找表列表
- python - 如何为特定列选择一个句子最长的行并合并以在 Python 中形成一个新的数据框?