Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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
确定字符串格式是否为";2013年5月16日“;或使用Javascript的UNIX时间戳_Javascript_Regex_Date_Data Cleaning - Fatal编程技术网

确定字符串格式是否为";2013年5月16日“;或使用Javascript的UNIX时间戳

确定字符串格式是否为";2013年5月16日“;或使用Javascript的UNIX时间戳,javascript,regex,date,data-cleaning,Javascript,Regex,Date,Data Cleaning,使用大型数据集进行数据争用。该数据有一个“日期”字段,可在“1370039735000”和“2013年5月16日”等格式之间随机切换。到目前为止,我已经将其他日期字段转换为 new Date("May 16, 2013") 或 我如何使用regex或其他方法区分这两种格式?我使用的是MongoDB,但都是Javascript。从你的帖子中,我假设你绝对100%肯定这是仅有的两种可能的格式。如果不是这样,那么评论/编辑你的文章 测试日期是否包含信函应该以简单的方式密封交易 /[a-z]/i.te

使用大型数据集进行数据争用。该数据有一个“日期”字段,可在“1370039735000”和“2013年5月16日”等格式之间随机切换。到目前为止,我已经将其他日期字段转换为

new Date("May 16, 2013")


我如何使用regex或其他方法区分这两种格式?我使用的是MongoDB,但都是Javascript。

从你的帖子中,我假设你绝对100%肯定这是仅有的两种可能的格式。如果不是这样,那么评论/编辑你的文章

测试日期是否包含信函应该以简单的方式密封交易

/[a-z]/i.test("May 16, 2013") // true, the date is written out
/[a-z]/i.test(1370039735000) // false, it's unix epoch format

如果您担心速度,您应该只测试Regex“^\D”(不是数字),因为一旦它在“May…”中碰到“M”,它就会失败。这将很快失败,并且只运行最少的次数。您还可以考虑只获取字符串中第一个字符的子字符串,并尝试将其转换为int,如果失败,则同样的情况是正确的。但是,通过保持正则表达式如此简短,速度不应该成为问题。

如果是unix时间戳,则仅为数字,如果不是,则为实际字符串(非空或布尔值),javascript具有相应的函数

易于使用

new Date(isNaN(str) ? str : NumberLong(str));

那是。。。根本不是他的帖子所说的,这显然不是他的意图。上面写着“像……”这样的格式。这怎么可能是你的意思?@ColinDeClue我不明白你在说什么。。。他说他有像X和Y这样的格式,我想这是他仅有的格式。这不合理吗?哦,天哪。我误解了你的帖子。我以为你只是在测试那些精确的东西。如中所示,正好是这两个日期。但一旦这个/[a-z]/i.test(1370039735000)命中数字的数据类型,它不会在联系时失败吗?确实会,但无论如何@adeneo的答案可能比我们的两个正则表达式的答案都好谢谢你为我指明了正确的方向@Vache。我们也非常感谢您的解决方案!是的,Regex并不是最简单的解决方案,但由于Regex是被请求的,这就是我所描述的。Adeneo建议使用isNaN绝对是最干净的解决方案。您不能使用MongoDB的查询
$type
操作符来检查它是否是日期或时间戳字段吗?@hwnd我不能使用$type,因为所有数据都是以字符串的形式呈现给我的。
isNaN(datestring_or_number)
new Date(isNaN(str) ? str : NumberLong(str));