javascript - 日期在服务器上关闭了一天,但在本地主机上没有
问题描述
我刚刚在这家软件公司开始了一份新工作,我们意识到就在几天前,我们的一些服务报告的日期差了一天。当我在 localhost 上运行应用程序时,所有日期都是正确的,所以我只能推测问题出在服务器端。
我们已经将所有日期和时间转换为 UTC,所以我认为这不是问题。
export const FormatDate = (stringDate) => {
if (stringDate && stringDate != "") {
var date = new Date(stringDate);
if (date.getFullYear() < 2015) { return "" }
var monthNames = ["Jan.", "Feb.", "Mar.", "Apr.", "May.", "Jun.", "Jul.", "Aug.", "Sep.", "Oct.", "Nov.", "Dec."];
var dateToPass = monthNames[date.getMonth()] + " " + (date.getDate() ) + ", " + date.getFullYear();
if (dateToPass === "Jan. 1, 1000") {
return "";
}
return dateToPass;
}
return "";
}
这就是我们目前格式化日期的方式。我认为这不会引起任何问题,但我对 JavaScript 还是有点陌生,所以任何建议都将不胜感激。
解决方案
当您创建一个新Data
实例时,您还会根据您的系统添加当前时区。
例如,考虑以下 UTC 时间字符串:Mon, 29 Jul 2019 13:00:00 GMT
如果你使用这个字符串创建一个新Date
对象然后获取本地时间,你最终可能会得到一个不同的时间字符串
const d = new Date('Mon, 29 Jul 2019 13:00:00 GMT')
// this will return string is according to your time zone, i got 16:00:00 GMT+0300
d.toTimeString();
因此,您可能会使用 UTC,但仍然会为不同的客户端获得不同的时间字符串。
推荐阅读
- python - 已安装 chrome 驱动程序并将其添加到路径中,但错误显示 Chromedriver 需要在路径中
- java - org.elasticsearch.client.RequestOptions 只是在 elasticsearch 客户端中找不到的依赖项
- javascript - 创建 React App SyntaxError: Unexpected Token
- c# - XML中是否可以有两个同名的DataTables?
- c# - Intellisense 中的双重参考导致问题
- javascript - 如何为我的 cron 作业调度程序编写单元测试用例
- ios - 使用 UISearchController 时如何删除排序/过滤的项目
- excel - 尝试使用 VBA 对访问表运行更新查询
- java - 如何在 webflux 中异步解析/写入 json?ObjectMapper 方法被阻塞
- r - R - 通过匹配名称将 lapply 输出与数据帧列表绑定