如何在给定 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 中的键清除具有半重复值的数组数组?

在 PHP 5.3 中,如何在没有严格警告的情况下在一行中获取单个元素数组中的值

helpers.php 第 531 行中的 ErrorException:htmlentities() 期望参数 1 为字符串,给定数组

PHP如何检查一个数组内是不是存在指定元素

如何按给定键的值对关联数组进行排序并在php中维护键? [复制]

PHP中的字谜算法