如何在给定 php 数组中的信息的 javascript 中使用 new Date() 创建日期?
Posted
技术标签:
【中文标题】如何在给定 php 数组中的信息的 javascript 中使用 new Date() 创建日期?【英文标题】:How do I make a date with new Date() in javascript given information from an array in php? 【发布时间】:2022-01-19 00:11:27 【问题描述】:我正在遍历 php 中的元素数组并通过 javascript 访问每个元素。我想比较日期,但为了做到这一点,我必须取出我需要做一个新的 Date() 对象的信息。这是 php 中的信息:
"0":
.
.
.
"dateInfo":
"date": "2021-11-19 00:00:000000",
"timezone_type": 3,
"timezone: "UTC"
,
.
.
.
,
我通过以下方式从 javascript 中的数组访问这些:
array["0"]["dateInfo"]
我试图通过这样做将年份月份和日期变成一个新的 Date() 对象:
var parts = array["0"]["dateInfo"]["date"].split('-');
var dateToComp = new Date(parts[0], parts[1], parts[2]);
但是当我执行console.log(dateToComp);
时,它说这是一个无效的日期。我的最终目标是将这个日期与今天的日期进行比较,以获得时尚的东西:
var today = new Date()
var parts = array["0"]["dateInfo"]["date"].split('-');
var dateToComp = new Date(parts[0], parts[1], parts[2]);
if(dateToComp < today)
return 0; // in the past
else
return 1; // same day or future day
我希望我想说的话是有道理的,任何帮助都将不胜感激。谢谢。
【问题讨论】:
您可能需要在 javascript 中仔细检查您的值。 PHP 中的 var_dump 可能不是您在 javascript 中得到的。console.log(array["0"]["dateInfo"]);
看看里面有什么。
如果日期确实包含您的想法,那么parts[2]
不会。它将是19 00:00:000000
$newDate = date( 'm/d/y g:i A', strtotime(array["0"]["dateInfo"]["date"]));
【参考方案1】:
new Date(array["0"]["dateInfo"]["date"])
应该工作
【讨论】:
ECMA-262 不支持 OP 格式,因此解析取决于实现。new Date("2021-11-19 00:00:000000")
至少在 Safari 中产生无效的日期,请参阅 Why does Date.parse give incorrect results?
效果很好【参考方案2】:
var dateToComp = new Date(parts[0], parts[1], parts[2].split(' ')[0]);
【讨论】:
@CinCout,请不要查看您不熟悉的技术的答案。这个答案是回答问题的诚实尝试。但是,它的质量很低,因为它是仅代码的答案。 Stack Overflow 的质量标准建议答案中的代码应附有关于代码为何/如何解决问题的简要说明。【参考方案3】:但是当我做了一个 console.log(dateToComp);它说这是一个无效的日期。
因为parts[2]
是“19 00:00:000000”,这是一个无效的日期组件。而是拆分任何非数字字符\D
。此外,您需要从月份中减去 1。
例如
let date = '2021-11-19 00:00:000000';
// Split on any non–digit character
let [y, m, d] = date.split(/\D/);
// Months are zero indexed
// Treat input as local
console.log(new Date(y, m-1, d).toString());
// Treat input as UTC
console.log(new Date(Date.UTC(y, m-1, d)).toISOString());
【讨论】:
以上是关于如何在给定 php 数组中的信息的 javascript 中使用 new Date() 创建日期?的主要内容,如果未能解决你的问题,请参考以下文章
在 PHP 5.3 中,如何在没有严格警告的情况下在一行中获取单个元素数组中的值
helpers.php 第 531 行中的 ErrorException:htmlentities() 期望参数 1 为字符串,给定数组