我想在 kotlin中決議一個MMYYYY欄位。YearMonth
示例嘗試:
import java.time.YearMonth
import java.time.format.DateTimeFormatter
import java.time.format.DateTimeFormatterBuilder
val formatter: DateTimeFormatter = DateTimeFormatterBuilder()
.parseCaseInsensitive()
.appendPattern("MMYYYY")
.toFormatter(Locale.ENGLISH)
println(YearMonth.parse("011970", formatter))
它沒有用
uj5u.com熱心網友回復:
您的模式不正確,它使用基于周的年份 ( Y) 的符號而不是年份 ( u) 或時代的年份 ( y)。
閱讀更多關于 的JavaDocs 中DateTimeFormatter的符號,其中一些相關的是:
| 象征 | 意義 | 介紹 | 例子 |
|---|---|---|---|
| G | 時代 | 文本 | 廣告; 公元; 一個 |
| 你 | 年 | 年 | 2004;04 |
| 是的 | 年代 | 年 | 2004;04 |
| … | … | … | … |
| 米/升 | 一年中的一個月 | 號碼/文字 | 7; 07; 七月; 七月; ? |
| … | … | … | … |
| 是 | 以周為基礎的年 | 年 | 1996;96 |
我建議您切換到年份:
import java.util.Locale
import java.time.YearMonth
import java.time.format.DateTimeFormatter
import java.time.format.DateTimeFormatterBuilder
val formatter: DateTimeFormatter = DateTimeFormatterBuilder()
.parseCaseInsensitive()
.appendPattern("MMuuuu")
.toFormatter(Locale.ENGLISH)
fun main() {
println(YearMonth.parse("011970", formatter))
}
此代碼列印1970-01
如果您確定您將只接收數字Strings,您還可以DateTimeFormatter通過檢查是否區分大小寫來使用不太復雜的:
val formatter = DateTimeFormatter.ofPattern("MMuuuu", Locale.ENGLISH)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/491860.html
下一篇:日期時間索引中的決議問題
