我知道可以通过previous question中的时间戳查询,但是,如果日期采用以下格式,该怎么办:
{
"lambeosaurus": {
"date" : "2012-20-03",
"length" : 12.5,
"weight": 5000
},
"stegosaurus": {
"date" : "2015-25-13",
"length" : 9,
"weight" : 2500
}
}
我如何按日期进行查询?
答案 0 :(得分:2)
您已将日期存储为字符串。当Firebase订购字符串时,它使用词典排序。按此顺序,"2012-20-03"
出现在"2012-25-01"
之前。
这就是您链接到的问题(以及Firebase文档)通常将日期存储为timestamps的原因。这些信息包含有关日期的所有信息,保证正确订购。
或者,您可以将日期存储为字符串。但在这种情况下,您必须确保日期采用按字典顺序排列的格式。对于您的样本:"2012-01-25"
和"2012-03-20"
。
因此,在这种情况下,您唯一的选择是将数据结构更改为原始问题(和文档)中的内容,或更改为按所需顺序排序的字符串格式。
答案 1 :(得分:1)
将其转换为时间戳:
new Date('2012-20-03'.split('-').reverse().join('/')).getTime()
一般来说:
function toTimeStamp(dateString){
return new Date(dateString.split('-').reverse().join('/')).getTime()
}