{"id":416,"date":"2025-11-21T03:37:09","date_gmt":"2025-11-21T03:37:09","guid":{"rendered":"https:\/\/iotnoob.com\/wordpress\/?p=416"},"modified":"2025-11-21T03:37:09","modified_gmt":"2025-11-21T03:37:09","slug":"%e0%b9%83%e0%b8%8a%e0%b9%89-localdatetime-%e0%b9%83%e0%b8%99%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%88%e0%b8%b1%e0%b8%94%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%a7%e0%b8%b1%e0%b8%99%e0%b8%97%e0%b8%b5%e0%b9%88","status":"publish","type":"post","link":"https:\/\/iotnoob.com\/wordpress\/2025\/11\/21\/%e0%b9%83%e0%b8%8a%e0%b9%89-localdatetime-%e0%b9%83%e0%b8%99%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%88%e0%b8%b1%e0%b8%94%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%a7%e0%b8%b1%e0%b8%99%e0%b8%97%e0%b8%b5%e0%b9%88\/","title":{"rendered":"\u0e43\u0e0a\u0e49 LocalDateTime \u0e43\u0e19\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e47\u0e19 String \u0e43\u0e19\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e15\u0e48\u0e32\u0e07\u0e46"},"content":{"rendered":"\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import java.time.LocalDateTime;\nimport java.time.format.DateTimeFormatter;\nimport java.time.format.DateTimeParseException;\nimport java.util.Arrays;\nimport java.util.List;\n\npublic class FlexibleDateTimeParser {\n\n    \/\/ \u0e01\u0e33\u0e2b\u0e19\u0e14\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a (formats) \u0e17\u0e35\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e44\u0e1b\u0e44\u0e14\u0e49\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\n    private static final List&lt;DateTimeFormatter> FORMATTERS = Arrays.asList(\n        DateTimeFormatter.ofPattern(\"yyyy-MM-dd'T'HH:mm:ss\"), \/\/ \u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a 1: 2025-10-01T10:01:11\n        DateTimeFormatter.ofPattern(\"dd\/MM\/yyyy HH:mm:ss\"), \/\/ \u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a 2: 01\/10\/2025 10:01:11\n        DateTimeFormatter.ofPattern(\"yyyy\/MM\/dd HH:mm\")     \/\/ \u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a 3: 2025\/10\/01 10:01\n        \/\/ ... \u0e40\u0e1e\u0e34\u0e48\u0e21\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e2d\u0e37\u0e48\u0e19\u0e46 \u0e17\u0e35\u0e48\u0e04\u0e32\u0e14\u0e27\u0e48\u0e32\u0e08\u0e30\u0e40\u0e08\u0e2d\u0e17\u0e35\u0e48\u0e19\u0e35\u0e48 ...\n    );\n\n    \/**\n     * \u0e1e\u0e22\u0e32\u0e22\u0e32\u0e21 parse String \u0e40\u0e1b\u0e47\u0e19 LocalDateTime \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e15\u0e48\u0e32\u0e07\u0e46 \u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e44\u0e27\u0e49\n     * * @param text String \u0e02\u0e2d\u0e07\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e41\u0e25\u0e30\u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23 parse\n     * @return LocalDateTime \u0e17\u0e35\u0e48 parse \u0e44\u0e14\u0e49 \u0e2b\u0e32\u0e01\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\u0e08\u0e30 throw DateTimeParseException\n     *\/\n    public static LocalDateTime parseFlexible(String text) {\n        \/\/ \u0e27\u0e19\u0e0b\u0e49\u0e33 (loop) \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e25\u0e2d\u0e07\u0e43\u0e0a\u0e49 DateTimeFormatter \u0e41\u0e15\u0e48\u0e25\u0e30\u0e15\u0e31\u0e27\n        for (DateTimeFormatter formatter : FORMATTERS) {\n            try {\n                \/\/ \u0e1e\u0e22\u0e32\u0e22\u0e32\u0e21\u0e17\u0e33\u0e01\u0e32\u0e23 parse\n                return LocalDateTime.parse(text, formatter);\n            } catch (DateTimeParseException e) {\n                \/\/ \u0e2b\u0e32\u0e01 parse \u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\u0e14\u0e49\u0e27\u0e22\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e19\u0e35\u0e49 \u0e43\u0e2b\u0e49\u0e25\u0e2d\u0e07\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e16\u0e31\u0e14\u0e44\u0e1b (Do nothing \/ continue loop)\n            }\n        }\n        \n        \/\/ \u0e2b\u0e32\u0e01\u0e27\u0e19\u0e25\u0e39\u0e1b\u0e04\u0e23\u0e1a\u0e17\u0e38\u0e01\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e41\u0e25\u0e49\u0e27\u0e22\u0e31\u0e07 parse \u0e44\u0e21\u0e48\u0e44\u0e14\u0e49 \u0e43\u0e2b\u0e49 throw exception \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e41\u0e08\u0e49\u0e07\u0e27\u0e48\u0e32\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23 input \u0e19\u0e35\u0e49\u0e44\u0e14\u0e49\n        throw new DateTimeParseException(\"Cannot parse date-time string: \\\"\" + text + \"\\\" using any known format.\", text, 0);\n    }\n\n    public static void main(String[] args) {\n        \/\/ \u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07 input \u0e17\u0e35\u0e48\u0e21\u0e35\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e15\u0e48\u0e32\u0e07\u0e01\u0e31\u0e19\n        String input1 = \"2025-10-01T10:01:11\"; \/\/ \u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a 1\n        String input2 = \"05\/12\/2024 14:30:00\"; \/\/ \u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a 2\n        String input3 = \"2023\/11\/20 09:00\";     \/\/ \u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a 3\n        String inputBad = \"2025-15-01T10:01:11\"; \/\/ input \u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14 (\u0e40\u0e14\u0e37\u0e2d\u0e19 15)\n\n        System.out.println(\"--- \u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23 Parse \u0e17\u0e35\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08 ---\");\n        try {\n            LocalDateTime d1 = parseFlexible(input1);\n            System.out.println(\"Input 1: \\\"\" + input1 + \"\\\" -> \" + d1);\n            \n            LocalDateTime d2 = parseFlexible(input2);\n            System.out.println(\"Input 2: \\\"\" + input2 + \"\\\" -> \" + d2);\n\n            LocalDateTime d3 = parseFlexible(input3);\n            System.out.println(\"Input 3: \\\"\" + input3 + \"\\\" -> \" + d3);\n\n        } catch (DateTimeParseException e) {\n            System.err.println(\"Error during successful parse: \" + e.getMessage());\n        }\n\n        System.out.println(\"\\n--- \u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23 Parse \u0e17\u0e35\u0e48\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14 ---\");\n        try {\n            \/\/ \u0e42\u0e04\u0e49\u0e14\u0e17\u0e35\u0e48\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e43\u0e19\u0e04\u0e33\u0e16\u0e32\u0e21\u0e15\u0e49\u0e19\u0e09\u0e1a\u0e31\u0e1a\u0e08\u0e30\u0e16\u0e39\u0e01\u0e15\u0e23\u0e27\u0e08\u0e1e\u0e1a\u0e43\u0e19\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e19\u0e35\u0e49 (Invalid value for MonthOfYear: 15)\n            LocalDateTime dBad = parseFlexible(inputBad);\n            System.out.println(\"Input Bad: \\\"\" + inputBad + \"\\\" -> \" + dBad); \/\/ \u0e42\u0e04\u0e49\u0e14\u0e19\u0e35\u0e49\u0e08\u0e30\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e23\u0e31\u0e19\n        } catch (DateTimeParseException e) {\n            \/\/ \u0e08\u0e30\u0e08\u0e31\u0e1a exception \u0e17\u0e35\u0e48\u0e16\u0e39\u0e01 throw \u0e2d\u0e2d\u0e01\u0e21\u0e32\u0e08\u0e32\u0e01 parseFlexible\n            System.err.println(\"Error: \" + e.getMessage());\n        }\n    }\n}<\/pre>\n\n\n\n<p>\u0e01\u0e32\u0e23\u0e41\u0e1b\u0e25\u0e07\u0e40\u0e1b\u0e47\u0e19 LocalDateTime \u0e21\u0e31\u0e19\u0e14\u0e35\u0e01\u0e27\u0e48\u0e32\u0e43\u0e0a\u0e49 String \u0e15\u0e23\u0e07\u0e46\u0e43\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19 \u0e04\u0e33\u0e19\u0e27\u0e13 \u0e2b\u0e23\u0e37\u0e2d\u0e2a\u0e48\u0e07\u0e44\u0e1b\u0e43\u0e2b\u0e49 function \u0e2d\u0e37\u0e48\u0e19\u0e46\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e2a\u0e19\u0e43\u0e08\u0e27\u0e48\u0e32\u0e15\u0e2d\u0e19\u0e19\u0e31\u0e49\u0e19\u0e40\u0e23\u0e32\u0e40\u0e02\u0e35\u0e22\u0e19\u0e43\u0e2b\u0e49\u0e21\u0e31\u0e19\u0e43\u0e0a\u0e49 format \u0e41\u0e1a\u0e1a\u0e44\u0e2b\u0e19 \u0e2b\u0e23\u0e37\u0e2d\u0e40\u0e23\u0e32\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23 String \u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48<\/p>\n\n\n\n<p>\u0e27\u0e34\u0e18\u0e35\u0e19\u0e35\u0e49\u0e21\u0e31\u0e19\u0e08\u0e30\u0e04\u0e2d\u0e22\u0e27\u0e19\u0e25\u0e39\u0e1b parse \u0e44\u0e1b\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e22\u0e46 \u0e42\u0e14\u0e22\u0e08\u0e31\u0e1a Exception \u0e44\u0e27\u0e49\u0e44\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e25\u0e39\u0e1b\u0e21\u0e31\u0e19\u0e2b\u0e22\u0e38\u0e14 \u0e08\u0e19\u0e01\u0e27\u0e48\u0e32\u0e08\u0e30\u0e40\u0e08\u0e2d option \u0e17\u0e35\u0e48\u0e15\u0e23\u0e07\u0e01\u0e31\u0e19<\/p>\n\n\n\n<p>\u0e2b\u0e25\u0e31\u0e01\u0e46\u0e21\u0e31\u0e19\u0e01\u0e47\u0e21\u0e32\u0e08\u0e32\u0e01 2 \u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e19\u0e35\u0e49\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e40\u0e1e\u0e35\u0e22\u0e07\u0e41\u0e15\u0e48\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e25\u0e39\u0e1b support \u0e43\u0e2b\u0e49\u0e04\u0e23\u0e1a\u0e17\u0e38\u0e01 format<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern(\"yyyy-MM-dd'T'HH:mm:ss\");\nLocalDateTime d = LocalDateTime.parse(jobRecordModel.getCreateDateTime(), formatter1);<\/pre>\n\n\n\n<p>\u0e27\u0e34\u0e18\u0e35\u0e19\u0e35\u0e49\u0e2d\u0e32\u0e08\u0e14\u0e39\u0e40\u0e2a\u0e35\u0e22\u0e40\u0e27\u0e25\u0e32 \u0e41\u0e15\u0e48\u0e01\u0e47\u0e41\u0e01\u0e49\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e04\u0e27\u0e32\u0e21\u0e44\u0e21\u0e48\u0e40\u0e02\u0e49\u0e32\u0e01\u0e31\u0e19\u0e44\u0e14\u0e49\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e40\u0e25\u0e22<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0e01\u0e32\u0e23\u0e41\u0e1b\u0e25\u0e07\u0e40\u0e1b\u0e47\u0e19 LocalDateTime \u0e21\u0e31\u0e19\u0e14\u0e35\u0e01\u0e27\u0e48\u0e32\u0e43\u0e0a\u0e49 String \u0e15\u0e23\u0e07\u0e46\u0e43\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19 \u0e04\u0e33\u0e19\u0e27\u0e13 \u0e2b\u0e23\u0e37\u0e2d\u0e2a\u0e48\u0e07\u0e44\u0e1b\u0e43\u0e2b\u0e49 function \u0e2d\u0e37\u0e48\u0e19\u0e46\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e2a\u0e19\u0e43\u0e08\u0e27\u0e48\u0e32\u0e15\u0e2d\u0e19\u0e19\u0e31\u0e49\u0e19\u0e40\u0e23\u0e32\u0e40\u0e02\u0e35\u0e22\u0e19\u0e43\u0e2b\u0e49\u0e21\u0e31\u0e19\u0e43\u0e0a\u0e49 format \u0e41\u0e1a\u0e1a\u0e44\u0e2b\u0e19 \u0e2b\u0e23\u0e37\u0e2d\u0e40\u0e23\u0e32\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23 String \u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,2],"tags":[],"class_list":["post-416","post","type-post","status-publish","format-standard","hentry","category-java","category-programming"],"_links":{"self":[{"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/posts\/416","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/comments?post=416"}],"version-history":[{"count":1,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/posts\/416\/revisions"}],"predecessor-version":[{"id":417,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/posts\/416\/revisions\/417"}],"wp:attachment":[{"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/media?parent=416"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/categories?post=416"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/tags?post=416"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}