如何将int从datePicker格式化为date-string

问题描述 投票:0回答:2

我能够从日期选择器中获取日期值:

override fun onDateSet(view: DatePicker?, year: Int, month: Int, dayOfMonth: Int) {
    Log.i("onDateSet", year.toString())
    Log.i("onDateSet", month.toString())
    Log.i("onDateSet", dayOfMonth.toString())
}

如何将这个整数格式化为日期字符串,例如:2020-05-05

并且我看到该月份总是在一个月前返回,如果今天是第5个月,则是第4个月。是错误还是我的工作方式,我需要从日期选择器获得的每个月加1?

android kotlin datetime-format
2个回答
1
投票

AndroidSDK's Date class中所述,

一个月由0到11之间的整数表示; 0是一月,1是二月,依此类推;因此11月是12月。

一个小时由0到23之间的整数表示。因此,从午夜到凌晨1点是0,而从中午到下午1点则是0。是12点。

分钟通常以0到59的整数表示。

秒以0到61之间的整数表示;值60和61仅出现leap秒。

日期和年份以通常的方式表示,而上述内容则以各自的规则表示。

如果它的五月,它将返回4,如果它的六月,将返回5,依此类推。

[[注意:尽管此行为似乎很奇怪,但它与java.util.Calendar类一致(尽管它与joda.time.DateTime不一致)。


1
投票
文档说,month int: the selected month (0-11 for compatibility with Calendar#MONTH),是的,这是所需的行为,要将其格式化为人类可读的格式,我想必须添加1。

为了格式化字符串,您可能应该手动连接您拥有的数据

val date = "$year-${month+1}-$day"

(对我来说最快的方法,但是您可以选择一些更漂亮的方法)

或者您可以做:

val date = LocalDate(year,monthOfYear + 1,dayOfMonth).toString(“ yyyy-MM-dd”)

© www.soinside.com 2019 - 2024. All rights reserved.