update guardar datos child angularjs firebase firebase-database angular-filters

angularjs - child - guardar datos en firebase android



Almacenamiento de valores de entrada de fecha en Firebase (2)

Dos opciones

1) Guarde la fecha en un formato más genérico, pero legible para las personas, por lo que ahora sería el domingo 27 de noviembre a las 09:13:38

20161127091338

2) Almacene la fecha como una marca de tiempo de Unix (en milisegundos) usando

(new Date).getTime() / 1000

Hay muchas variantes en el n. ° 2, así que investigue un poco para ver cuál es la mejor para su caso de uso.

Puede guardar cualquiera de las respuestas como una cadena pero # 1 sería más fácil de buscar ya que las consultas no requerirían ningún tipo de conversiones: para ver los eventos de hoy.

queryStartingAt("20161127") and queryEndingAt("20161127")

Así que así es como se ve mi código

cropref.child(mycrop.name).push({ cropname:mycrop.name, croplocation:mycrop.location, cropplantdate:mycrop.plantdate.toString(), cropharvestdate:mycrop.harvestdate.toString(), })

mycrop.harvestdate y mycrop.plantdate son entradas de fecha de mi html

<input type="date" ng-model=''mycrop.harvestdate''> <input type="date" ng-model=''mycrop.harvestdate''>

para poder poner los datos en mi base de datos de Firebase, necesito convertirlos primero en cadenas

cropplantdate:mycrop.plantdate.toString(),

pero los datos en mi base de datos de Firebase incluyen hora y zona horaria

Data de muestra

Sat Dec 12 2020 00:00:00 GMT+0800 (Malay Peninsula Standard Time)

así que una vez que llamo a los datos de mi base de datos, no puedo filtrarlos ya que ya no es una fecha sino una cadena. ¿Cómo resuelvo este problema para poder filtrar la fecha (que se convierte en cadena) almacenada en mi base de datos?


Necesita convertir la fecha primero en su Formato. Puede usar SimpleDateFormatFormat para eso.

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

Ahora puede formatear fácilmente su fecha en este formato

String mynewdate = sdf.format(mycrop.plantdate.getTime());

La salida de hoy sería:

2016-11-27

Por supuesto, puede revertir eso a un calendario. Lo hago de esta manera:

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; }