Евгений Колесников 4 жил өмнө
parent
commit
959e088135

+ 30 - 0
articles/weather2.md

@@ -531,6 +531,7 @@ while (parser.eventType != XmlPullParser.END_DOCUMENT) {
         XmlPullParser.END_TAG -> {
             when (parser.name) {
                 "time" -> {
+                    subTag = ""
                     // по закрытию тега "time" пишем погоду в массив
                     weatherList.add(
                         Weather(
@@ -552,6 +553,35 @@ while (parser.eventType != XmlPullParser.END_DOCUMENT) {
 }
 ```
 
+## Разбор даты
+
+Форматы дат более менее [стандартизованы](https://developer.android.com/reference/java/time/format/DateTimeFormatter), но если под рукой нет интернета, то можно разобрать любую дату по [шаблону](https://developer.android.com/reference/java/time/format/DateTimeFormatter#patterns
+
+
+Литерал | Значение
+:------:|---------
+y       | Год (2021, 21)
+M       | Номер месяца (1..12)
+d       | День месяца (1..31)
+H       | Часы
+m       | Минуты
+s       | Секунды
+''      | Любой литерал
+
+```kt
+// разбор простой MySQL даты, тут практически нет подводных камней
+tempDate = LocalDateTime.parse(
+    "2021-11-16 10:12:13", 
+    DateTimeFormatter.ofPattern("y-M-d H:m:s")
+)
+
+// разбор ISO даты, нужно экранировать символ "Т" и обрезать лишнюю часть строки 
+tempDate = LocalDateTime.parse(
+    "2021-11-16T10:12:13Z".substring(0,19), 
+    DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss")
+)
+```
+
 # Задание
 
 * вывести в элементы списка остальную информацию о погоде (формат XML)

+ 21 - 0
shpora/DateTime.kt

@@ -0,0 +1,21 @@
+Литерал | Значение
+:------:|---------
+y       | Год (2021, 21)
+M       | Номер месяца (1..12)
+d       | День месяца (1..31)
+H       | Часы
+m       | Минуты
+s       | Секунды
+''      | Любой литерал
+
+// разбор простой MySQL даты, тут практически нет подводных камней
+tempDate = LocalDateTime.parse(
+    "2021-11-16 10:12:13", 
+    DateTimeFormatter.ofPattern("y-M-d H:m:s")
+)
+
+// разбор ISO даты, нужно экранировать символ "Т" и обрезать лишнюю часть строки 
+tempDate = LocalDateTime.parse(
+    "2021-11-16T10:12:13Z".substring(0,19), 
+    DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss")
+)