所以这就是我的代码的样子
cropref.child(mycrop.name).push({
cropname:mycrop.name,
croplocation:mycrop.location,
cropplantdate:mycrop.plantdate.toString(),
cropharvestdate:mycrop.harvestdate.toString(),
})
mycrop.harvestdate
和mycrop.plantdate
都是来自我的html
<input type="date" ng-model='mycrop.harvestdate'>
<input type="date" ng-model='mycrop.harvestdate'>
为了能够将数据放在我的Firebase数据库上,我需要先将其转换为字符串
cropplantdate:mycrop.plantdate.toString(),
但我的Firebase数据库中的数据包含时间和时区
示例数据
Sat Dec 12 2020 00:00:00 GMT+0800 (Malay Peninsula Standard Time)
所以一旦我从我的数据库中调用数据,我就无法过滤它,因为它不再是一个日期而是一个字符串。 如何解决此问题,以便我可以过滤存储在我的数据库中的日期(转换为字符串)
答案 0 :(得分:3)
两个选项
1)以更通用但人类可读的格式存储日期,所以现在是11月27日星期日09:13:38
20161127091338
2)使用
将日期存储为unix时间戳(以毫秒为单位)(new Date).getTime() / 1000
#2有很多变种,所以做一些研究,看看哪种最适合你的用例。
您可以将答案保存为字符串,但#1更容易搜索,因为查询不需要任何类型的转换 - 查看今天的事件
queryStartingAt("20161127") and queryEndingAt("20161127")
答案 1 :(得分:0)
您需要先在格式中转换日期。你可以使用SimpleDateFormatFormat。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
现在您可以轻松地将日期格式化为此格式
String mynewdate = sdf.format(mycrop.plantdate.getTime());
今天的输出将是:
2016-11-27
当然,您可以将其反转回日历。我是这样做的:
public static Calendar fromStringtoCalendar(String datestring){
int year = Integer.valueOf(datestring.substring(0, 4));
int month = Integer.valueOf(datestring.substring(5, 7)) -1;
int day = Integer.valueOf(datestring.substring(8, 10));
Calendar calendar = Calendar.getInstance();
calendar.set(year, month, day);
return calendar;
}