SimpleDateFormat,或者在Android / Kotlin中将日期格式从24hr格式转换为12hr格式

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

很奇怪。我知道。这是执行代码。

[执行timePickerDialog之前,我执行了datePickerDialog,它填充了c[Calendar.YEAR]c[Calendar.MONTH]c[Calendar.DAY_OF_MONTH],但是该代码是意大利面条,可能与之无关。如果需要,我会附上。

val timePickerDialog = TimePickerDialog(context, { _, hour, minute ->
                    c[Calendar.HOUR] = hour
                    c[Calendar.MINUTE] = minute

                    formattedDateTime =
                        if (DateFormat.is24HourFormat(context)) {
                            Toast.makeText(context, "Chose '24 hour' clause", Toast.LENGTH_SHORT)
                                .show()
                            SimpleDateFormat("dd MMM, yyyy 'at' HH:mm", Locale.getDefault()).format(c.time)
                        } else {
                            Toast.makeText(context, "Chose '12 hour' clause", Toast.LENGTH_SHORT).show()
                            SimpleDateFormat("dd MMM, yyyy 'at' hh:mm aa", Locale.getDefault()).format(c.time)
                        }

                    it.txtGreetingTime.text = formattedDateTime

                }, c[Calendar.HOUR], c[Calendar.MINUTE], DateFormat.is24HourFormat(context))

一旦选择了时间和日期,然后再次执行相同的操作,先前的输出文本将与此输出文本不同。

请注意,用户设置为24小时格式。

第一次这样做:

Selecting datetime the first time!

这是第一次执行后的外观(忽略突出显示的“人”,即联系人的搜索机制的实现):

Looks fine for the first time, as expected

然后,再次做同样的事情(我发誓这是我第二次这样做,可能看起来一样):

As expected for the second time

但是这是什么怪物?!

Don't know what is happening here

祝酒者确认我都输入了24小时if-clause,所以我认为选择正确的日期格式是可以的。 (还请注意,如果格式为12小时,则AM / PM会按照代码提示在此处,但在输出中不存在)。

我不知道这怎么可能发生。 SimpleDateFormat会在使用前实例化,因此无法在其他任何地方弄乱它,因此我认为它不是来自datePickerDialog

任何线索/建议/想法?

java android kotlin simpledateformat
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.