javascript - 将 Firestore 时间戳发送到外部 API UTC 丢失
问题描述
我在 Firestore 中存储了一个时间戳,例如 18/2/1995 00:00:00 作为 DoB 存储它 BST(+1 UTC)
我试图在函数中提取该日期,并使用该值作为主体的一部分调用 API。
无论我如何尝试和约会,我都会失去那个小时。
我努力了
- 火力基地的 toDate()
- 让日期 = 新日期(newValue.dob.seconds * 1000);
- 发送 ISO 字符串
- .toUTCString() (c# 不喜欢)
- c# 端的日期时间
- DateTimeOffset 在旁边。
目前我不确定哪一方是错的。
在 c# API 方面,我使用了 DateTimes 和 DateTimeOffsets ,使用前者,我得到的日期减去一个小时,而使用后者,我得到的日期缺少一个小时,最后是 +0:00。
这是怎么设置的。我希望 DateTimeOffset 对象只会获取 JS 中日期的任何 UTC 信息?
我正在尝试的代码
let date = newValue.dob.toDate();
console.log(date);
console.log(date.getMinutes());
console.log(date.getTimezoneOffset());
date.setMinutes(date.getMinutes() - date.getTimezoneOffset());
console.log(date);
和
let date = new Date(newValue.dob.seconds * 1000);
console.log(date);
console.log(date.getMinutes());
console.log(date.getTimezoneOffset());
date.setMinutes(date.getMinutes() - date.getTimezoneOffset());
console.log(date);
输出总是
解决方案
当您渲染时间戳时,它将添加操作系统可用的任何本地化时区偏移量,因为时间戳本身是基于 UTC 的。
如果要将时间戳区域化到您的区域,则必须从新的 Date 对象中找到偏移量:Date.getTimezoneOffset()
然后将其添加到分钟。
推荐阅读
- symfony - 在 Symfony 中拥有一个与实体没有关联的自定义存储库
- c# - 无法将 Redis.RedisValue 转换为 Task
- html - Angular 6中包含冒号的事件名称的事件绑定
- python - 如何将 gtk 小部件绑定到 python 变量或@property?
- r - 根据数据类型为 R 中的行分配上一个值
- java - 为什么持续调用 onGeolocationPermissionsShowPrompt?
- r - R闪亮的导入传单html小部件对象
- alibaba-cloud-ecs - E-MapReduce 集群中的 ZooKeeper 服务
- reporting-services - 如何仅在两个日期/时间参数之间的差异小于 2 小时时才执行报告
- c++ - OpenGL在屏幕上移动多边形