解析 date-fns returns 前一天的值
parse date-fns returns one day previous value
我第一次尝试使用 date-fns 库解析日期(我删除了 moment.js,我将在我的项目中引入 date-fns)但是,当我使用解析函数时,我得到了一个结果是前一天。我阅读了这个话题
该问题是由于时区引起的,但我无法解决我的问题,因为我收到格式为“yyyyMMdd”的日期。这是我的代码
var start ="20210119";
var stop ="20210130";
const dateFrom = parse(start, "yyyyMMdd", new Date());
console.log("date form",dateFrom);
我的控制台日志的输出是:2021-01-18T23:00:00.000Z
你的 dateFrom
日期实际上是正确的,假设你想要它在你的本地时间。
它在您的控制台输出中提前一个小时显示的原因是它在 UTC
时间显示(因此最后的祖鲁语 'Z')。我假设您的当地时间比 1 月份的 UTC 早一个小时。
我们可以使用 Date.toLocaleString()
输出 UTC 或当地时间的时间。
如果我们以当地时间输出,我们看到日期实际上是正确的 (2021-01-19 00:00:00),如果我们以 UTC 输出(将时区设置为 'UTC'),我们看到它早了一小时(如在您的控制台输出中)。
我们还可以使用Date.getFullYear()
、Date.getMonth()
和Date.getDate()
输出本地日期。
var start ="20210119";
var stop ="20210130";
const dateFrom = dateFns.parse(start, "yyyyMMdd", new Date());
console.log("Date from (is Date object):", dateFrom instanceof Date);
console.log("\nDate from (console.log):",dateFrom);
console.log("Date from (UTC):", dateFrom.toLocaleString([], { timeZone: 'UTC' }));
console.log("\nDate from (Local):", dateFrom.toLocaleString());
console.log("Date from (Local):", dateFrom.toDateString());
console.log("Date from (Local):", `${dateFrom.getFullYear()}-${dateFrom.getMonth()+1}-${dateFrom.getDate()}`);
<script src="https://cdnjs.cloudflare.com/ajax/libs/date-fns/1.28.5/date_fns.min.js"></script>
我第一次尝试使用 date-fns 库解析日期(我删除了 moment.js,我将在我的项目中引入 date-fns)但是,当我使用解析函数时,我得到了一个结果是前一天。我阅读了这个话题
该问题是由于时区引起的,但我无法解决我的问题,因为我收到格式为“yyyyMMdd”的日期。这是我的代码
var start ="20210119";
var stop ="20210130";
const dateFrom = parse(start, "yyyyMMdd", new Date());
console.log("date form",dateFrom);
我的控制台日志的输出是:2021-01-18T23:00:00.000Z
你的 dateFrom
日期实际上是正确的,假设你想要它在你的本地时间。
它在您的控制台输出中提前一个小时显示的原因是它在 UTC
时间显示(因此最后的祖鲁语 'Z')。我假设您的当地时间比 1 月份的 UTC 早一个小时。
我们可以使用 Date.toLocaleString()
输出 UTC 或当地时间的时间。
如果我们以当地时间输出,我们看到日期实际上是正确的 (2021-01-19 00:00:00),如果我们以 UTC 输出(将时区设置为 'UTC'),我们看到它早了一小时(如在您的控制台输出中)。
我们还可以使用Date.getFullYear()
、Date.getMonth()
和Date.getDate()
输出本地日期。
var start ="20210119";
var stop ="20210130";
const dateFrom = dateFns.parse(start, "yyyyMMdd", new Date());
console.log("Date from (is Date object):", dateFrom instanceof Date);
console.log("\nDate from (console.log):",dateFrom);
console.log("Date from (UTC):", dateFrom.toLocaleString([], { timeZone: 'UTC' }));
console.log("\nDate from (Local):", dateFrom.toLocaleString());
console.log("Date from (Local):", dateFrom.toDateString());
console.log("Date from (Local):", `${dateFrom.getFullYear()}-${dateFrom.getMonth()+1}-${dateFrom.getDate()}`);
<script src="https://cdnjs.cloudflare.com/ajax/libs/date-fns/1.28.5/date_fns.min.js"></script>