Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js从DOM中刮取日期时间_Javascript_Node.js_Datetime_Web Scraping - Fatal编程技术网

Javascript Node.js从DOM中刮取日期时间

Javascript Node.js从DOM中刮取日期时间,javascript,node.js,datetime,web-scraping,Javascript,Node.js,Datetime,Web Scraping,我有一个简单的问题 我有这个HTML代码 <time datetime="2014-02-18"> 18 February 2014</time> 或 但在控制台上都返回未定义的 谢谢 (我假设您在Node或cheerio或类似的应用程序中使用jQuery。) 您可以通过attr获取字符串: var dateString = $('time').attr('datetime'); 然后用你最喜欢的方式把它转换成一个日期,确保有正确的时区。例如,你可以 var da

我有一个简单的问题

我有这个HTML代码

  <time datetime="2014-02-18"> 18 February 2014</time>

但在控制台上都返回未定义的

谢谢

(我假设您在Node或cheerio或类似的应用程序中使用jQuery。)

您可以通过
attr
获取字符串:

var dateString = $('time').attr('datetime');
然后用你最喜欢的方式把它转换成一个日期,确保有正确的时区。例如,你可以

var date = new Date(dateString);
…首先检查了Node版本中的V8版本对其所做的操作后,不幸的是,规范在其上出现了问题:

  • 它在ES5之前根本没有定义
  • 根据ISO-8601,如果没有时区指示器而不是本地时间,则ES5错误地将其定义为UTC,因此
    “2014-02-18”
    本应为UTC,但:
  • 这在ES2015中是固定的,因此
    “2014-02-18”
    将被解释为当地时间,但:
  • 然后在ES2016中更新,表示只有日期的表格应为UTC,日期时间表格应为当地时间,因此
    “2014-02-18”
    应再次为UTC

因此,如果您使用V8,或者使用
新日期(年、月、日)
(对于本地时间)或
新日期(Date.UTC(年、月日))
(对于UTC)自己处理它,请确保您知道您的V8副本在做什么。

时间不是一个值字段,因此值将不起作用

在javascript中,您可以使用

document.getElementsByTagName("time")[0].getAttribute("datetime");
如果您使用的是JQuery,那么可以使用

$('time').attr('datetime')

datetime基本上是时间字段的一个属性。

var date=$('time').text()
@RajaprabhuAravindasamy:那将是
“2014年2月18日”
,而不是OP要求的。如果下面的答案回答了您的问题,即堆栈溢出的工作方式,您将通过单击旁边的复选标记“接受”答案,第二个选项也适用于cheerio-谢谢
document.getElementsByTagName("time")[0].getAttribute("datetime");
$('time').attr('datetime')