gpt4 book ai didi

java - Android - GregorianCalendar 显示错误的月份

转载 作者:行者123 更新时间:2023-12-02 12:37:24 25 4
gpt4 key购买 nike

我尝试在互联网上搜索并在 StackOverlflow 上发现了很多关于同一主题的问题,但找不到任何我能够理解的内容......

所以,我有一个包含 GregorianCalendar 类型的 dateOfOrigin 的数据类。使用 gson 我转换所有 json 并返回一个包含所有位置的 Observable 数组。在 json 文件中,我将 dateOfOrigin 添加为一个对象,如下所示:

{
"id": 6,
"name": "Fuse",
"image": "fuse.jpg",
"street": "Blaesstraat 208",
"city": "Brussels Hoofdstedelijk Gewest",
"zip": 1000,
"date_of_origin": {"year":1994,"month":4,"dayOfMonth":16},
"parking": true
}

这就是我的数据类的样子:
data class Location (    val id : Int,    val name : String,    val image : String,    val street : String,    val city : String,    val zip : Int,    @SerializedName("date_of_origin")    val originDate : GregorianCalendar?,    val parking : Boolean = true,    var imageBitmap : Bitmap? = null)

Whenever I try to set the dateText like this:

originDate?.let {
dateText = "${it.get(Calendar.DAY_OF_MONTH)} ${it.getDisplayName(Calendar.MONTH, Calendar.SHORT, Locale.getDefault())} ${it.get(Calendar.YEAR)}"

dateText = resources.getString(R.string.origin_date, dateText)
}

它输出 16 May 1994而不是 16 Apr 1994
我无法弄清楚如何解决这个问题......

编辑
在大多数情况下,从月份中减去 1 似乎可以解决问题。不过,我有一个结果应该输出 30 Jan 2016但显示 1 Feb 2016 .
"date_of_origin": {"year":2016,"month":1,"dayOfMonth":30}

最佳答案

GregorianCalendar表示月份,数字范围为 011 .这意味着数字 0表示为一月和11表示截至 12 月。

因此,您需要减去 1如果您的 API 没有使用与 Java 实现相同的逻辑。

更新:GregorianCalendar(2016, 1, 30)被理解为2月30日。这在内部转换为 3 月 1 日,因此当您从日期中减去一个月时,您将得到 2 月 1 日。您需要创建 GregorianCalendar 的实例类已经减去月份数,即。一月为 0,二月为 1,依此类推。

关于java - Android - GregorianCalendar 显示错误的月份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61887963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com