Date 将日期月份格式化为3个首字母的字符串-Kotlin
我有一个日期“2019年8月8日”,我希望它看起来像这样:“2019年8月8日”,我试图在时使用Date 将日期月份格式化为3个首字母的字符串-Kotlin,date,kotlin,formatdatetime,Date,Kotlin,Formatdatetime,我有一个日期“2019年8月8日”,我希望它看起来像这样:“2019年8月8日”,我试图在时使用,但想知道是否有更简单的方法来实现这一点?我知道这是一个有点小的问题,但我试图通过internet找到答案,但我找不到。您可以使用Java的SimpleDataFormat类: import java.text.SimpleDateFormat 在代码中的某个地方: val myDateStr = "08/08/2019" val parsedDateObj = SimpleDateFromat("
,但想知道是否有更简单的方法来实现这一点?我知道这是一个有点小的问题,但我试图通过internet找到答案,但我找不到。您可以使用Java的SimpleDataFormat类:
import java.text.SimpleDateFormat
在代码中的某个地方:
val myDateStr = "08/08/2019"
val parsedDateObj = SimpleDateFromat("dd/MM/yyyy").parse(myDateStr)
val formattedDateStr = SimpleDateFormat("dd, MMM yyyy").format(parsedDateObj) // "08, Aug 2019"
首先,需要将字符串转换为日期对象,然后使用新的
更新
val firstDate = "08/08/2019"
val formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy")
val date = formatter.parse(firstDate)
val desiredFormat = DateTimeFormatter.ofPattern("dd, MMM yyyy").format(date)
println(desiredFormat) //08, Aug 2019
旧答案
val firstDate = "08/08/2019"
val formatter = SimpleDateFormat("dd/MM/yyyy")
val date = formatter.parse(firstDate)
val desiredFormat = SimpleDateFormat("dd, MMM yyyy").format(date)
println(desiredFormat) //08, Aug 2019
使用预定义的本地化格式和java.time
关于Java语法,我很抱歉,我相信你会翻译。输出为:
2019年8月8日
这不完全是您要求的2019年8月08日的
。然而,java通常对全球范围内的人们期望什么样的格式有一个很好的想法,所以我的第一个建议是考虑与这个解决方案(坦白地说,代码> 08代码/代码>,逗号对我来说也有点奇怪,但是我知道什么?)
代码片段演示的另一个功能是使用java.time中的LocalDate
和DateTimeFormatter
,后者是现代java日期和时间API。我强烈推荐java.time而不是像date
这样过时的日期时间类,尤其是SimpleDateFormat
。它们设计得很差。他们被替换是有原因的
如果您的用户说他们绝对想要2019年8月8日的08
,则需要通过格式模式字符串指定:
DateTimeFormatter handBuiltFormatter = DateTimeFormatter.ofPattern("dd, MMM uuuu", englishIsrael);
String dateStringWeWant = date.format(handBuiltFormatter);
现在我们确实得到了您要求的输出:
2019年8月8日
链接:解释如何使用java.time,现代java日期和时间API。我得到了这个错误:
java.lang.IllegalArgumentException:无法将给定对象格式化为日期
@ofir2471啊对不起,从内存中写下了答案,我忘了它需要对象!编辑了我的答案。有没有办法从EditText
元素打开它?我试过点击onClick
,但它只在第二次点击时起作用click@ofir2471我不明白你的问题你想做什么?抱歉弄错了,我在做日期选择,忘了我没有在这里问,抱歉,我会删除它看起来不错。我没有进一步的评论(只是向上投票)。我知道2019年8月8日是8月8日,但9月8日是2019年9月8日还是2019年8月9日?这取决于你在编写所需格式时的定义,正如在下面的答案中我很快找到的一样,在我看来,几个答案至少可以帮你找到一些方法。也许你应该训练你的搜索能力?也许我应该。无论如何,谢谢你的帮助!尝试了var date=event.date?format(DateTimeFormatter.Of模式(“dd,MMM uuuu”)
但日期保持不变,2019年9月16日
当然事件日期保持不变。LocalDate
是不可变的,也不能有格式。只能在字符串中使用格式。请看。使用SimpleDateFormat
的老式方法,您可以控制字符串的变化,因此我可能会坚持使用它。对不起,我没有理解,恐怕您误解了。如果我正确理解Kotlin语法,var date=event.date?.format(DateTimeFormatter.ofPattern(“dd,MMM uuuu”)
还将为您提供所需的字符串。我只说了“字符串”。是的,我知道日期是不可变的,我只能改变我在字符串中看到它的方式,但字符串保持不变,没有任何格式。
DateTimeFormatter handBuiltFormatter = DateTimeFormatter.ofPattern("dd, MMM uuuu", englishIsrael);
String dateStringWeWant = date.format(handBuiltFormatter);