[我尝试搜索互联网,并在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
}
这就是我的数据类的样子:
数据类位置(val id:整数val名称:字符串,val image:字符串,val street:字符串,val city:字符串,val zip:整数,@SerializedName(“ date_of_origin”)val originDate:GregorianCalendar ?,val parking:布尔值= true,var imageBitmap:位图? =空)
每当我尝试这样设置dateText时:
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}
Gregorian日历代表月份,其数字范围为0
至11
。这意味着数字0
表示为1月,11
表示为12月。
因此,如果您的API使用的逻辑与Java实现不同,则需要减去1
。
更新:GregorianCalendar(2016, 1, 30)
被理解为2月30日。这是由Java日历翻译成的3月1日,因此,减去一个月,便得到2月1日。您需要已经用减去的月份数(即)构造了GregorianCalendar
类的实例。一月为0,二月为1,依此类推。