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