Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 将日期月份格式化为3个首字母的字符串-Kotlin_Date_Kotlin_Formatdatetime - Fatal编程技术网

Date 将日期月份格式化为3个首字母的字符串-Kotlin

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("

我有一个日期“2019年8月8日”,我希望它看起来像这样:“2019年8月8日”,我试图在时使用
,但想知道是否有更简单的方法来实现这一点?我知道这是一个有点小的问题,但我试图通过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);