{"id":972,"date":"2019-02-22T00:57:27","date_gmt":"2019-02-21T15:57:27","guid":{"rendered":"https:\/\/chat-messenger.com\/?p=972"},"modified":"2019-06-30T18:43:45","modified_gmt":"2019-06-30T09:43:45","slug":"every-date-string-tocalendar","status":"publish","type":"post","link":"https:\/\/chat-messenger.com\/en\/blog\/java\/every-date-string-tocalendar","title":{"rendered":"Convert any Java date\/time string to Date or Calendar type"},"content":{"rendered":"<h2 class=\"common_title\"><a name=\"0\">every<strong>Date<\/strong>interpoint (interword separation)<strong>time<\/strong>string.<strong>java.util.Date<\/strong>, ,<strong>Calendar<\/strong>conversion to<\/a><\/h2>\n<p>Java can be used to create all kinds of<strong>Date, time string<\/strong>if possible. <strong>Calendar<\/strong> , , <strong>java.util.Date<\/strong> The following is a sample program that converts to the<\/p>\n<p>Conversion requires formatting to the default date\/time string and then <strong>Calendar<\/strong> type. If conversion is not possible, an IllegalArgumentException will be thrown.<\/p>\n<p>Also,<strong>java.util.Date<\/strong> The getTime() method of the Calendar class is used for conversion to the<\/p>\n<p>The date formats that can be converted are as follows<\/p>\n<div class=\"related\">\n<ul>\n<li><strong>yyyy\/MM\/dd<\/strong><\/li>\n<li><strong>yy\/MM\/dd<\/strong><\/li>\n<li><strong>yyyy-MM-dd<\/strong><\/li>\n<li><strong>yy-MM-dd<\/strong><\/li>\n<li><strong>yyyyMMdd<\/strong><\/li>\n<\/ul>\n<p>The following time fields combined with the above are also valid<\/p>\n<ul>\n<li><strong>HH:mm<\/strong><\/li>\n<li><strong>HH:mm:ss<\/strong><\/li>\n<li><strong>HH:mm:ss.SSS<\/strong><\/li>\n<\/ul>\n<\/div>\n<h2 class=\"common_title\"><a name=\"1\">sample program<\/a><\/h2>\n<p><textarea readonly=\"readonly\" style=\"font-size: 13px;height: 400px;\" class=\"src\" onclick=\"this.focus();this.select()\">\/**<br \/>\n * \u6307\u5b9a\u3055\u308c\u305f\u65e5\u4ed8\u30fb\u6642\u523b\u6587\u5b57\u5217\u3092\u3001\u53ef\u80fd\u3067\u3042\u308c\u3070<br \/>\n * Calendar\u30af\u30e9\u30b9\u306b\u5909\u63db\u3057\u307e\u3059\u3002<br \/>\n * \u4ee5\u4e0b\u306e\u5f62\u5f0f\u306e\u65e5\u4ed8\u6587\u5b57\u5217\u3092\u5909\u63db\u3067\u304d\u307e\u3059\u3002<br \/>\n *<br \/>\n * \u25cf\u5909\u63db\u53ef\u80fd\u306a\u5f62\u5f0f\u306f\u4ee5\u4e0b\u3068\u306a\u308a\u307e\u3059\u3002<br \/>\n *  yyyy\/MM\/dd<br \/>\n *  yy\/MM\/dd<br \/>\n *  yyyy-MM-dd<br \/>\n *  yy-MM-dd<br \/>\n *  yyyyMMdd<br \/>\n *<br \/>\n * \u4e0a\u8a18\u306b\u4ee5\u4e0b\u306e\u6642\u9593\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u7d44\u307f\u5408\u308f\u3055\u308c\u305f\u72b6\u614b<br \/>\n * \u3067\u3082\u6709\u52b9\u3067\u3059\u3002<br \/>\n *  HH:mm<br \/>\n *  HH:mm:ss<br \/>\n *  HH:mm:ss.SSS<br \/>\n *<br \/>\n * @param strDate \u65e5\u4ed8\u30fb\u6642\u523b\u6587\u5b57\u5217\u3002<br \/>\n * @return \u5909\u63db\u5f8c\u306eCalendar\u30af\u30e9\u30b9\u3002<br \/>\n * @throws IllegalArgumentException<br \/>\n *         \u65e5\u4ed8\u6587\u5b57\u5217\u304c\u5909\u63db\u4e0d\u53ef\u80fd\u306a\u5834\u5408<br \/>\n *         \u307e\u305f\u306f\u3001\u77db\u76fe\u3057\u3066\u3044\u308b\u5834\u5408\uff08\u4f8b\uff1a2000\/99\/99\uff09\u3002<br \/>\n *\/<br \/>\npublic static Calendar toCalendar(String strDate){<br \/>\n    strDate = format(strDate);<br \/>\n    Calendar cal = Calendar.getInstance();<br \/>\n    cal.setLenient(false);<\/p>\n<p>    int yyyy = Integer.parseInt(strDate.substring(0,4));<br \/>\n    int MM = Integer.parseInt(strDate.substring(5,7));<br \/>\n    int dd = Integer.parseInt(strDate.substring(8,10));<br \/>\n    int HH = cal.get(Calendar.HOUR_OF_DAY);<br \/>\n    int mm = cal.get(Calendar.MINUTE);<br \/>\n    int ss = cal.get(Calendar.SECOND);<br \/>\n    int SSS = cal.get(Calendar.MILLISECOND);<br \/>\n    cal.clear();<br \/>\n    cal.set(yyyy,MM-1,dd);<br \/>\n    int len = strDate.length();<br \/>\n    switch (len) {<br \/>\n        case 10:<br \/>\n            break;<br \/>\n        case 16: \/\/ yyyy\/MM\/dd HH:mm<br \/>\n            HH = Integer.parseInt(strDate.substring(11,13));<br \/>\n            mm = Integer.parseInt(strDate.substring(14,16));<br \/>\n            cal.set(Calendar.HOUR_OF_DAY,HH);<br \/>\n            cal.set(Calendar.MINUTE,mm);<br \/>\n            break;<br \/>\n        case 19: \/\/yyyy\/MM\/dd HH:mm:ss<br \/>\n            HH = Integer.parseInt(strDate.substring(11,13));<br \/>\n            mm = Integer.parseInt(strDate.substring(14,16));<br \/>\n            ss = Integer.parseInt(strDate.substring(17,19));<br \/>\n            cal.set(Calendar.HOUR_OF_DAY,HH);<br \/>\n            cal.set(Calendar.MINUTE,mm);<br \/>\n            cal.set(Calendar.SECOND,ss);<br \/>\n            break;<br \/>\n        case 23: \/\/yyyy\/MM\/dd HH:mm:ss.SSS<br \/>\n            HH = Integer.parseInt(strDate.substring(11,13));<br \/>\n            mm = Integer.parseInt(strDate.substring(14,16));<br \/>\n            ss = Integer.parseInt(strDate.substring(17,19));<br \/>\n            SSS = Integer.parseInt(strDate.substring(20,23));<br \/>\n            cal.set(Calendar.HOUR_OF_DAY,HH);<br \/>\n            cal.set(Calendar.MINUTE,mm);<br \/>\n            cal.set(Calendar.SECOND,ss);<br \/>\n            cal.set(Calendar.MILLISECOND,SSS);<br \/>\n            break;<br \/>\n        default :<br \/>\n            throw new IllegalArgumentException(<br \/>\n                    \u201cArgument string[\u201c+ strDate +<br \/>\n                    \u201c] cannot be converted to a date string\u201d);<br \/>\n    }<br \/>\n    return cal;<br \/>\n}<\/p>\n<p>\/**<br \/>\n * Default date\/time format for various date\/time strings<br \/>\n Convert to *.<br \/>\n *<br \/>\n * \u25cfThe default date format is as follows.<br \/>\n * For date only: yyyy\/MM\/dd<br \/>\n * For date + time: yyyy\/MM\/dd HH:mm:ss.SSS<br \/>\n *<br \/>\n * @param str String to convert<br \/>\n * @return Default date\/time format<br \/>\n * @throws IllegalArgumentException<br \/>\n * If the date string cannot be converted<br \/>\n *\/<br \/>\nprivate static String format(String str){<br \/>\n    if (str == null || str.trim().length() &lt; 8) {<br \/>\n        throw new IllegalArgumentException(<br \/>\n                \u201cArgument string [\u201c+ str +<br \/>\n                \u201c] cannot be converted to a date string\u201d);<br \/>\n    }<br \/>\n    str = str.trim();<br \/>\n    String yyyy = null; String MM = null; String dd = null;<br \/>\n    String HH = null; String mm = null;<br \/>\n    String ss = null;String ss = null;<br \/>\n    \/\/ If \u201c-\u201d or \u201c\/\u201d is missing<br \/>\n    if (str.indexOf(\u201c\/\u201d)==-1 &amp;&amp; str.indexOf(\u201c-\u201c)==-1) {<br \/>\n        if (str.length() == 8) {<br \/>\n            yyyy = str.substring(0,4);<br \/>\n            MM = str.substring(4,6);<br \/>\n            dd = str.substring(6,8);<br \/>\n            return yyyy+\u201d\/\u201d+MM+\u201d\/\u201d+dd;<br \/>\n        }<br \/>\n        yyyy = str.substring(0,4);<br \/>\n        MM = str.substring(4,6);<br \/>\n        dd = str.substring(6,8);<br \/>\n        HH = str.substring(9,11);<br \/>\n        mm = str.substring(12,14);<br \/>\n        ss = str.substring(15,17);<br \/>\n        return yyyy+\u201d\/\u201d+MM+\u201d\/\u201d+dd+\u201d \u201c+HH+\u201d:\u201d+mm+\u201d:\u201d+ss;<br \/>\n    }<br \/>\n    StringTokenizer token = new StringTokenizer(str,\u201d_\/-:. \u201c);<br \/>\n    StringBuffer result = new StringBuffer();<br \/>\n    for(int i = 0; token.hasMoreTokens(); i++) {<br \/>\n        String temp = token.nextToken();<br \/>\n        switch(i){<br \/>\n            case 0:\/\/ year part<br \/>\n                yyyy = fillString(str, temp, \u201cL\u201d, \u201c20\u201d, 4);<br \/>\n                result.append(yyyy);<br \/>\n                break;<br \/>\n            case 1:\/\/ month part<br \/>\n                MM = fillString(str, temp, \u201cL\u201d, \u201c0\u201d, 2);<br \/>\n                result.append(\u201c\/\u201d+MM);<br \/>\n                break;<br \/>\n            case 2:\/\/ day part<br \/>\n                dd = fillString(str, temp, \u201cL\u201d, \u201c0\u201d, 2);<br \/>\n                result.append(\u201c\/\u201d+dd);<br \/>\n                break;<br \/>\n            case 3:\/\/ time part<br \/>\n                HH = fillString(str, temp, \u201cL\u201d, \u201c0\u201d, 2);<br \/>\n                result.append(\u201d \u201c+HH);<br \/>\n                break;<br \/>\n            case 4:\/\/ minute part<br \/>\n                mm = fillString(str, temp, \u201cL\u201d, \u201c0\u201d, 2);<br \/>\n                result.append(\u201c:\u201d+mm);<br \/>\n                break;<br \/>\n            case 5:\/\/ second part<br \/>\n                ss = fillString(str, temp, \u201cL\u201d, \u201c0\u201d, 2);<br \/>\n                result.append(\u201c:\u201d+ss);<br \/>\n                break;<br \/>\n            case 6:\/\/ millisecond part<br \/>\n                SSS = fillString(str, temp, \u201cR\u201d, \u201c0\u201d, 3);<br \/>\n                result.append(\u201c.\u201d+SSS);<br \/>\n                break;<br \/>\n        }<br \/>\n    }<br \/>\n    return result.toString();<br \/>\n}<br \/>\nprivate static String fillString(String strDate, String str,<br \/>\n                             String position, String addStr,<br \/>\n                             int len){<br \/>\n    if (str.length() &gt; len) {<br \/>\n        throw new IllegalArgumentException(<br \/>\n            \u201cArgument string[\u201c+ strDate +<br \/>\n            \u201c] cannot be converted to a date string\u201d);<br \/>\n    }<br \/>\n    return fillString(str, position, len,addStr);<br \/>\n}<\/p>\n<p>\/**<br \/>\n * Add the string [addStr] to be added to the string [str]<br \/>\n * Insert at [position] until [len] is filled.<br \/>\n *<br \/>\n * *Even if [str] is null or an empty literal, use [addStr]<br \/>\n * Returns the result inserted until [len] is filled.<br \/>\n * @param str target string<br \/>\n * @param position Insert before \u21d2 L or l Insert after \u21d2 R or r<br \/>\n * @param len Number of digits to replenish<br \/>\n * @param addStr String to insert<br \/>\n * @return The string after conversion.<br \/>\n *\/<br \/>\nprivate static String fillString(String str, String position,<br \/>\n        int len,<br \/>\n        String addStr) {<br \/>\n    if (addStr == null || addStr.length() == 0) {<br \/>\n        throw new IllegalArgumentException<br \/>\n            (\u201cThe value of the string to be inserted is invalid. addStr=\u201d+addStr);<br \/>\n    }<br \/>\n    if (str == null) {<br \/>\n        str = \u201c\u201d;<br \/>\n    }<br \/>\n    StringBuffer buffer = new StringBuffer(str);<br \/>\n    while (len &gt; buffer.length()) {<br \/>\n        if (position.equalsIgnoreCase(\u201cl\u201d)) {<br \/>\n            int sum = buffer.length() + addStr.length();<br \/>\n            if (sum &gt; len) {<br \/>\n                addStr = addStr.substring<br \/>\n                    (0,addStr.length() \u2013 (sum \u2013 len));<br \/>\n                buffer.insert(0, addStr);<br \/>\n            }else{<br \/>\n                buffer.insert(0, addStr);<br \/>\n            }<br \/>\n        } else {<br \/>\n            buffer.append(addStr);<br \/>\n        }<br \/>\n    }<br \/>\n    if (buffer.length() == len) {<br \/>\n        return buffer.toString();<br \/>\n    }<br \/>\n    return buffer.toString().substring(0, len);<br \/>\n}<br \/>\n<\/textarea><br \/>\n<script type=\"text\/javascript\" src=\"https:\/\/chat-messenger.com\/js\/common.js?dd12sssas2223\" charset=\"UTF-8\"><\/script><br \/>\n<script type=\"text\/javascript\"> writePR(); <\/script><\/p>\n<h2 class=\"common_title\"><a name=\"2\">Execution Result<\/a><\/h2>\n<p>\u25c6Example of Execution<br \/>\n<textarea readonly=\"readonly\" style=\"font-size: 13px;height: 400px;\" class=\"src\" onclick=\"this.focus();this.select()\">public static void main(String[] args) {<br \/>\n    System.out.println(&#8220;\\n&#8212;&#8211; \u65e5\u4ed8\u306e\u307f &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8220;);<br \/>\n    \/\/ yyyy\/MM\/dd\u306e\u30d1\u30bf\u30fc\u30f3<br \/>\n    Calendar cal = toCalendar(&#8220;2007\/01\/01&#8221;);<br \/>\n    Date date = cal.getTime();<br \/>\n    System.out.println(&#8220;[2007\/01\/01] = &#8216;&#8221;+date+&#8221;&#8216;&#8221;);<\/p>\n<p>    \/\/ yyyy-MM-dd pattern<br \/>\n    cal = toCalendar(\u201c2007-01-01\u201d);<br \/>\n    date = cal.getTime();<br \/>\n    System.out.println(\u201c[2007-01-01] = &#039;\u201d+date+\u201d\u2019\u201d);<\/p>\n<p>    \/\/yyyyMMdd pattern<br \/>\n    cal = toCalendar(\u201c20070101\u201d);<br \/>\n    date = cal.getTime();<br \/>\n    System.out.println(\u201c[20070101] = &#039;\u201d+date+\u201d\u2019\u201d);<\/p>\n<p>    \/\/ yy-MM-dd pattern<br \/>\n    cal = toCalendar(\u201c07-01-01\u201d);<br \/>\n    date = cal.getTime();<br \/>\n    System.out.println(\u201c[07-01-01] = &#039;\u201d+date+\u201d\u2019\u201d);<\/p>\n<p>    System.out.println(\u201c\\n\u2014\u2013 Date+Time \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2013\u201c);<br \/>\n    \/\/ pattern of yyyy\/MM\/dd HH:mm:ss<br \/>\n    cal = toCalendar(\u201c2007\/01\/01 12:00:00\u201d);<br \/>\n    date = cal.getTime();<br \/>\n    System.out.println(\u201c[2007\/01\/01 12:00:00] = &#039;\u201d+date+\u201d\u2019\u201d);<\/p>\n<p>    \/\/ pattern of yyyyMMdd HH:mm:ss<br \/>\n    cal = toCalendar(\u201c20070101 12:00:00\u201d);<br \/>\n    date = cal.getTime();<br \/>\n    System.out.println(\u201c[20070101 12:00:00] = &#039;\u201d+date+\u201d\u2019\u201d);<\/p>\n<p>    \/\/ pattern of yyyy\/MM\/dd HH:mm<br \/>\n    cal = toCalendar(\u201c2007\/01\/01 12:00\u201d);<br \/>\n    date = cal.getTime();<br \/>\n    System.out.println(\u201c[2007\/01\/01 12:00] = &#039;\u201d+date+\u201d\u2019\u201d);<\/p>\n<p>    System.out.println(\u201c\\n\u2014\u2013 Time only \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u201c);<br \/>\n    \/\/ Pattern of HH:mm:ss. *If only the time is used, add the date in front.<br \/>\n    cal = toCalendar(<br \/>\n            new SimpleDateFormat(\u201cyyyy\/MM\/dd\u201d).format(new Date()) +<br \/>\n            &#8221; 12:00:00&#8243;);<br \/>\n    date = cal.getTime();<br \/>\n    System.out.println(\u201c[12:00:00] = &#039;\u201d+date+\u201d\u2019\u201d);<br \/>\n}<br \/>\n<\/textarea><\/p>\n<p>\u25c6Output result<\/p>\n<pre class=\"console\">----- Date only ---------------------------\r\n[2007\/01\/01] = 'Mon Jan 01 00:00:00 JST 2007'\r\n[2007-01-01] = 'Mon Jan 01 00:00:00 JST 2007'\r\n[20070101] = 'Mon Jan 01 00:00:00 JST 2007'\r\n[07-01-01] = 'Mon Jan 01 00:00:00 JST 2007'\r\n\r\n----- Date + Time --------------------------\r\n[2007\/01\/01 12:00:00] = 'Mon Jan 01 12:00:00 JST 2007'\r\n[2007\/01\/01 12:00:00] = 'Mon Jan 01 12:00:00 JST 2007'\r\n[2007\/01\/01 12:00] = 'Mon Jan 01 12:00:00 JST 2007'\r\n\r\n----- time only ---------------------------\r\n[12:00:00] = 'Wed Jun 06 12:00:00 JST 2007'\r\n<\/pre>\n<p>\nThis sample program is a Chat&amp;Messenger \"<a href=\"https:\/\/chat-messenger.com\/en\/manual\/schedule_calendar\/calendar\/\" title=\"Calendar and scheduling functions\">Calendar and scheduling functions<\/a>The actual use of the system is done in the \"I'm a fan of this system.<\/p>","protected":false},"excerpt":{"rendered":"<p>Convert any date\/time string to java.util.Date, java.util.Calendar Java [\u2026]<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"swell_btn_cv_data":""},"categories":[19],"tags":[],"_links":{"self":[{"href":"https:\/\/chat-messenger.com\/en\/wp-json\/wp\/v2\/posts\/972"}],"collection":[{"href":"https:\/\/chat-messenger.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chat-messenger.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/en\/wp-json\/wp\/v2\/comments?post=972"}],"version-history":[{"count":10,"href":"https:\/\/chat-messenger.com\/en\/wp-json\/wp\/v2\/posts\/972\/revisions"}],"predecessor-version":[{"id":3634,"href":"https:\/\/chat-messenger.com\/en\/wp-json\/wp\/v2\/posts\/972\/revisions\/3634"}],"wp:attachment":[{"href":"https:\/\/chat-messenger.com\/en\/wp-json\/wp\/v2\/media?parent=972"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chat-messenger.com\/en\/wp-json\/wp\/v2\/categories?post=972"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chat-messenger.com\/en\/wp-json\/wp\/v2\/tags?post=972"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}