Reputation: 5250
Now my working code is where I save the date as String is here
Now i want save date as a ServerValue.TIMESTAMP
as in this answer
So first i tried to modified my model:
data class Target(
val guid: String = "",
val name: String = "",
val description: String = "",
val timestamp: MutableMap<String, Any>? = mutableMapOf()
)
after in presenter write smth like this:
fun addTarget(name: String, description: String, timestamp: ServerValue) {
if (!TextUtils.isEmpty(name)) {
val id: String = databaseReference?.push()?.key.toString()
val map = mutableMapOf<String, Any>()
map.put("timestamp", ServerValue.TIMESTAMP)
val target = Target(guid = id, name = name, description = description, timestamp = map)
targetsRef?.push()?.setValue(target)
} else Log.d("some", "Enter a name")
}
But parameter timestamp
is never used.
Also in fragment i need Map, but get String, because i take it from dateView text
val date = dateView?.text.toString().trim()
in method:
override fun editTarget(targetGuid: String) {
val name = nameEditText?.text.toString().trim()
val description = descriptionEditText?.text.toString().trim()
val date = dateView?.text.toString().trim()
presenter.addTarget(name, description, date)
}
UPD: This is how i take date from my DatePickerDialog:
private fun showDatePickerDialog() {
val date = LocalDate.now(ZoneId.systemDefault())
val currentYear = date.year
val currentMonth = date.monthValue
val currentDay = date.dayOfMonth
val dateFormatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM)
pickDate.setOnClickListener {
val datePickDialog = DatePickerDialog(
activity,
R.style.DatePickerDialogTheme,
DatePickerDialog.OnDateSetListener { _, year, month, dayOfMonth ->
val selectedDate = LocalDate.of(year, month + 1, dayOfMonth)
val dateString = selectedDate.format(dateFormatter)
dateView.text = dateString
},
currentYear,
currentMonth - 1,
currentDay
)
datePickDialog.show()
datePickDialog.setOnCancelListener { dialog -> dialog.dismiss() }
}
}
And after this i take smth like this
val date = dateView?.text.toString().trim()
Upvotes: 0
Views: 2346
Reputation: 744
You can parse the selected date like this and get the epoch milliseconds
val parsedDate = LocalDate.parse("your-date-here", dateFormatter)
val milliseconds = parseDate.atStartOfDay().toInstant(ZoneOffset.UTC).toEpochMilli()
you can then save the milliseconds to database. atStartOfDay()
will set the time to midnight.
Upvotes: 1