प्रत्येकतारीख・समयडोरीजावा.यूटिल.डेट、जावा.यूटिल.कैलेंडरमें बदलो
जावा में, सभीदिनांक और समय स्ट्रिंगअगर संभव हो तो, जावा.यूटिल.कैलेंडर 、 जावा.यूटिल.डेट यह डेटा प्रकार में परिवर्तित करने के लिए एक नमूना प्रोग्राम है।
यह रूपांतरण सबसे पहले दिनांक और समय को एक डिफ़ॉल्ट दिनांक और समय स्ट्रिंग में स्वरूपित करता है, और फिर... जावा.यूटिल.कैलेंडर इसे टाइप में परिवर्तित किया जाता है। यदि रूपांतरण संभव नहीं है तो IllegalArgumentException उत्पन्न होता है।
भी,जावा.यूटिल.डेट सही प्रकार में परिवर्तित करने के लिए, कैलेंडर क्लास के getTime() मेथड का उपयोग करें।
निम्नलिखित तिथि प्रारूप परिवर्तनीय हैं:
नमूना कार्यक्रम
int yyyy = Integer.parseInt(strDate.substring(0,4));
int MM = Integer.parseInt(strDate.substring(5,7));
int dd = Integer.parseInt(strDate.substring(8,10));
int HH = cal.get(Calendar.HOUR_OF_DAY);
int mm = cal.get(Calendar.MINUTE);
int ss = cal.get(Calendar.SECOND);
int SSS = cal.get(Calendar.MILLISECOND);
कैल.क्लियर();
कैल.सेट(yyyy,MM-1,dd);
int len = strDate.length();
स्विच (लेन) {
मामला 10:
तोड़ना;
केस 16: // yyyy/MM/dd HH:mm
HH = Integer.parseInt(strDate.substring(11,13));
mm = Integer.parseInt(strDate.substring(14,16));
cal.set(Calendar.HOUR_OF_DAY,HH);
कैल.सेट(कैलेंडर.मिनट, मिमी);
तोड़ना;
मामला 19: //yyyy/MM/dd HH:mm:ss
HH = Integer.parseInt(strDate.substring(11,13));
mm = Integer.parseInt(strDate.substring(14,16));
ss = Integer.parseInt(strDate.substring(17,19));
cal.set(Calendar.HOUR_OF_DAY,HH);
कैल.सेट(कैलेंडर.मिनट, मिमी);
कैल.सेट(कैलेंडर.सेकंड,एसएस);
तोड़ना;
केस 23: //yyyy/MM/dd HH:mm:ss.SSS
HH = Integer.parseInt(strDate.substring(11,13));
mm = Integer.parseInt(strDate.substring(14,16));
ss = Integer.parseInt(strDate.substring(17,19));
SSS = Integer.parseInt(strDate.substring(20,23));
cal.set(Calendar.HOUR_OF_DAY,HH);
कैल.सेट(कैलेंडर.मिनट, मिमी);
कैल.सेट(कैलेंडर.सेकंड,एसएस);
कैल.सेट(कैलेंडर.मिलीसेकंड,एसएसएस);
तोड़ना;
गलती करना:
थ्रो न्यू इल्लीगलआर्गुमेंटएक्सेप्शन (
“आर्गुमेंट स्ट्रिंग[" + strDate +
“"] को दिनांक स्ट्रिंग में परिवर्तित नहीं किया जा सकता है।"
}
रिटर्न कैल;
}
/**
* डिफ़ॉल्ट दिनांक और समय प्रारूप में विभिन्न दिनांक और समय स्ट्रिंग
में बदलो *।
*
* डिफ़ॉल्ट दिनांक प्रारूप इस प्रकार है:
* केवल तिथियों के लिए: वर्ष/माह/दिन
* दिनांक और समय के लिए: yyyy/MM/dd HH:mm:ss.SSS
*
* @param str परिवर्तित की जाने वाली स्ट्रिंग
* @return डिफ़ॉल्ट दिनांक और समय प्रारूप
* @throws IllegalArgumentException
* यदि दिनांक स्ट्रिंग को परिवर्तित नहीं किया जा सकता है
*/
निजी स्थैतिक स्ट्रिंग प्रारूप (स्ट्रिंग str) {
if (str == null || str.trim().length() < 8) {
थ्रो न्यू इल्लीगलआर्गुमेंटएक्सेप्शन (
“आर्गुमेंट स्ट्रिंग[" + str +
“"] को दिनांक स्ट्रिंग में परिवर्तित नहीं किया जा सकता है।"
}
str = str.trim();
स्ट्रिंग yyyy = null; स्ट्रिंग MM = null; स्ट्रिंग dd = null;
स्ट्रिंग HH = null; स्ट्रिंग mm = null;
स्ट्रिंग एसएस = नल; स्ट्रिंग एसएस = नल;
// यदि कोई "-" या "/" नहीं है
if (str.indexOf(“/”)==-1 && str.indexOf(“-“)==-1) {
if (str.length() == 8) {
yyyy = str.substring(0,4);
MM = str.substring(4,6);
dd = str.substring(6,8);
yyyy+”/”+MM+”/”+dd लौटाएँ;
}
yyyy = str.substring(0,4);
MM = str.substring(4,6);
dd = str.substring(6,8);
HH = str.substring(9,11);
mm = str.substring(12,14);
ss = str.substring(15,17);
yyyy+”/”+MM+”/”+dd+” “+HH+”:”+mm+”:”+ss लौटाएँ;
}
StringTokenizer token = new StringTokenizer(str,”_/-:. “);
StringBuffer result = new StringBuffer();
for(int i = 0; token.hasMoreTokens(); i++) {
स्ट्रिंग टेम्प = टोकन.नेक्स्टटोकन();
स्विच(i){
मामला 0:// वर्ष भाग
yyyy = fillString(str, temp, “L”, “20”, 4);
परिणाम.अपेंड(yyyy);
तोड़ना;
मामला 1:// महीना भाग
एमएम = फिलस्ट्रिंग(स्ट्र, टेम्प, “एल”, “0”, 2);
परिणाम.जोड़ें("/"+एमएम);
तोड़ना;
मामला 2:// दिन का हिस्सा
dd = fillString(str, temp, “L”, “0”, 2);
परिणाम.जोड़ें("/"+डीडी);
तोड़ना;
मामला 3:// समय भाग
HH = fillString(str, temp, “L”, “0”, 2);
परिणाम.अपेंड(" "+एचएच);
तोड़ना;
मामला 4:// भाग
mm = fillString(str, temp, “L”, “0”, 2);
परिणाम.जोड़ें(":"+मिमी);
तोड़ना;
मामला 5:// सेकंड के बारे में भाग
एसएस = फिलस्ट्रिंग(स्ट्र, टेम्प, “एल”, “0”, 2);
परिणाम.जोड़ें(":"+एसएस);
तोड़ना;
केस 6:// मिलीसेकंड भाग
एसएसएस = फिलस्ट्रिंग(स्ट्र, टेम्प, “आर”, “0”, 3);
परिणाम.अपेंड("."+SSS);
तोड़ना;
}
}
return result.toString();
}
निजी स्थैतिक स्ट्रिंग फिलस्ट्रिंग (स्ट्रिंग strDate, स्ट्रिंग str,
स्ट्रिंग पोजीशन, स्ट्रिंग ऐडस्ट्र,
int len){
if (str.length() > len) {
थ्रो न्यू इल्लीगलआर्गुमेंटएक्सेप्शन (
“आर्गुमेंट स्ट्रिंग[" + strDate +
“"] को दिनांक स्ट्रिंग में परिवर्तित नहीं किया जा सकता है।"
}
return fillString(str, position, len,addStr);
}
/**
स्ट्रिंग [str] के लिए, जोड़ी जाने वाली स्ट्रिंग [addStr] जोड़ें
* [position] द्वारा निर्दिष्ट स्थिति पर तब तक सम्मिलित करता है जब तक कि यह [len] मान को भर न दे।
*
* *भले ही [str] null हो या खाली लिटरल हो, [addStr] फिर भी काम करेगा।
* [len] तक भरने तक डालने का परिणाम लौटाता है।
* @param str लक्ष्य स्ट्रिंग
* @param position ⇒ L या l से पहले डालें ⇒ R या r के बाद डालें
* @param len जोड़ने के लिए अंकों की संख्या
* @param addStr सम्मिलित करने के लिए स्ट्रिंग
* @return रूपांतरण के बाद स्ट्रिंग।
*/
निजी स्थैतिक स्ट्रिंग फिलस्ट्रिंग (स्ट्रिंग str, स्ट्रिंग स्थिति,
पूर्णांक लंबाई,
स्ट्रिंग addStr) {
if (addStr == null || addStr.length() == 0) {
throw new IllegalArgumentException
(सम्मिलित की जाने वाली स्ट्रिंग का मान अमान्य है। addStr="+addStr");
}
यदि (str == null) {
str = "";
}
StringBuffer buffer = new StringBuffer(str);
while (len > buffer.length()) {
यदि (position.equalsIgnoreCase(“l”)) {
int sum = buffer.length() + addStr.length();
यदि (योग > लंबाई) {
addStr = addStr.substring
(0,addStr.length() – (sum – len));
बफर.इन्सर्ट(0, ऐडस्ट्र);
अन्य{
बफर.इन्सर्ट(0, ऐडस्ट्र);
}
अन्य {
बफर.अपेंड(ऐडस्ट्र);
}
}
if (buffer.length() == len) {
return buffer.toString();
}
return buffer.toString().substring(0, len);
}
निष्पादन परिणाम
◆उदाहरण
// yyyy-MM-dd पैटर्न
cal = toCalendar(“2007-01-01”);
दिनांक = कैल.गेटटाइम();
System.out.println(“[2007-01-01] = '‘+date+””‘);
// yyyyMMdd पैटर्न
cal = toCalendar(“20070101”);
दिनांक = कैल.गेटटाइम();
System.out.println(“[20070101] = '‘+date+””‘);
// yy-MM-dd पैटर्न
cal = toCalendar(“07-01-01”);
दिनांक = कैल.गेटटाइम();
System.out.println(“[07-01-01] = '‘+date+””‘);
System.out.println(“\n—– दिनांक+समय ————————–“);
// yyyy/MM/dd HH:mm:ss पैटर्न
cal = toCalendar(“2007/01/01 12:00:00”);
दिनांक = कैल.गेटटाइम();
System.out.println(“[2007/01/01 12:00:00] = '‘+date+””‘);
// yyyyMMdd HH:mm:ss पैटर्न
cal = toCalendar(“20070101 12:00:00”);
दिनांक = कैल.गेटटाइम();
System.out.println(“[20070101 12:00:00] = '‘+date+””‘);
// yyyy/MM/dd HH:mm पैटर्न
cal = toCalendar(“2007/01/01 12:00”);
दिनांक = कैल.गेटटाइम();
System.out.println(“[2007/01/01 12:00] = '‘+date+””‘);
System.out.println("\n--- केवल समय ------");
// पैटर्न: घंटे:माह:सेकंड। *यदि केवल समय की आवश्यकता है, तो तिथि पहले से जोड़ दें।
कैल = टूकैलेंडर(
नया SimpleDateFormat(“yyyy/MM/dd”).format(नया Date()) +
”"12:00:00");
दिनांक = कैल.गेटटाइम();
System.out.println(“[12:00:00] = '‘+date+””‘);
}
◆आउटपुट परिणाम
----- केवल दिनांक -------------------------------- [2007/01/01] = 'सोम जनवरी 01 00:00:00 जेएसटी 2007' [2007-01-01] = 'सोम जनवरी 01 00:00:00 जेएसटी 2007' [20070101] = 'सोम जनवरी 01 00:00:00 जेएसटी 2007' [07-01-01] = 'सोम जनवरी 01 00:00:00 जेएसटी 2007' ----- दिनांक + समय ---------------------- [2007/01/01 12:00:00] = 'सोम जनवरी 01 12:00:00 जेएसटी 2007' [20070101 12:00:00] = 'सोम जनवरी 01 12:00:00 जेएसटी 2007' [2007/01/01 12:00] = 'सोमवार 01 जनवरी 12:00:00 JST 2007' ----- केवल समय --------------------------- [12:00:00] = 'बुधवार 06 जून 12:00:00 JST 2007''
यह सैंपल प्रोग्राम चैट और मैसेंजर के लिए है।कैलेंडर और शेड्यूल प्रबंधन फ़ंक्शनमैं वास्तव में [इस संदर्भ में] इसका उपयोग कर रहा हूँ।
