JSP में JSTL fmt:parseDate टैग का उपयोग करके तिथि स्ट्रिंग पार्स करना
JSTL का <fmt:parseDate> टैग एक स्ट्रिंग को java.util.Date ऑब्जेक्ट में पार्स करता है, जिसे आगे फॉर्मेटिंग, तुलना, या डेटाबेस संचालन के लिए उपयोग किया जा सकता है।
विशेषताएँ
| विशेषता | विवरण | आवश्यक | डिफ़ॉल्ट |
| value | पार्स की जाने वाली तिथि स्ट्रिंग | नहीं | बॉडी सामग्री |
| type | DATE, TIME, या BOTH | नहीं | date |
| dateStyle | FULL, LONG, MEDIUM, SHORT, DEFAULT | नहीं | default |
| timeStyle | FULL, LONG, MEDIUM, SHORT, DEFAULT | नहीं | default |
| parseLocale | पार्सिंग के लिए उपयोग करने वाला स्थानीय | नहीं | डिफ़ॉल्ट स्थानीय |
| pattern | कस्टम पार्सिंग पैटर्न (SimpleDateFormat संगत) | नहीं | कोई नहीं |
| timeZone | पार्स की गई तिथि का समय क्षेत्र | नहीं | डिफ़ॉल्ट समय क्षेत्र |
| var | पार्स की गई तिथि संग्रहीत करने के लिए चर नाम | नहीं | पेज पर प्रिंट |
| scope | चर का स्कोप (page, request, session, application) | नहीं | page |
पैटर्न अक्षर (SimpleDateFormat के समान)
| अक्षर | अर्थ | उदाहरण |
| y | वर्ष | 2024, 24 |
| M | वर्ष में महीना | July, Jul, 07 |
| d | महीने में दिन | 10 |
| H | दिन में घंटा (0-23) | 14 |
| h | AM/PM में घंटा (1-12) | 02 |
| m | घंटे में मिनट | 30 |
| s | मिनट में सेकंड | 55 |
| S | मिलीसेकंड | 978 |
| E | सप्ताह में दिन | Tuesday |
| a | AM/PM मार्कर | PM |
| z | समय क्षेत्र | IST, GMT+05:30 |
उदाहरण: कस्टम पैटर्न के साथ तिथि पार्स करना
<%@ taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="https://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<title>JSTL fmt:parseDate Tag</title>
</head>
<body>
<h3>Date Parsing:</h3>
<c:set var="now" value="20-10-2010" />
<fmt:parseDate value="${now}" var="parsedEmpDate" pattern="dd-MM-yyyy" />
<p>Parsed Date: <c:out value="${parsedEmpDate}"/></p>
</body>
</html>
आउटपुट
Date Parsing:
Parsed Date: Wed Oct 20 00:00:00 GST 2010
व्याख्या
<c:set var="now" value="20-10-2010"/>: स्ट्रिंग "20-10-2010" को चर now में संग्रहीत करता है
<fmt:parseDate value="${now}" var="parsedEmpDate" pattern="dd-MM-yyyy"/>:
- चर
now से मान पार्स करता है
- पैटर्न
dd-MM-yyyy का उपयोग करता है (दिन-महीना-वर्ष, हाइफ़न विभाजक)
- परिणामी
java.util.Date ऑब्जेक्ट को चर parsedEmpDate में संग्रहीत करता है
<c:out value="${parsedEmpDate}"/>: पार्स की गई तिथि प्रिंट करता है (डिफ़ॉल्ट toString() प्रारूप)
अन्य पैटर्न उदाहरण
<fmt:parseDate value="2024-12-31" pattern="yyyy-MM-dd" var="date"/>
<fmt:parseDate value="31/12/2024 14:30" pattern="dd/MM/yyyy HH:mm" var="dateTime"/>
<fmt:parseDate value="Dec 31, 2024" pattern="MMM dd, yyyy" var="date"/>
<fmt:parseDate value="20241231" pattern="yyyyMMdd" var="date"/>
पूर्वनिर्धारित शैलियों का उपयोग (pattern के बजाय)
<fmt:parseDate value="October 20, 2010" dateStyle="LONG" var="date"/>
<fmt:parseDate value="10/20/10" dateStyle="SHORT" var="date"/>
<fmt:parseDate value="2:30 PM" timeStyle="SHORT" type="TIME" var="time"/>
स्थानीय-विशिष्ट पार्सिंग
<fmt:parseDate value="20 अक्टूबर 2010" pattern="dd MMMM yyyy" parseLocale="hi_IN" var="date"/>
सामान्य समस्याएं और समाधान
| समस्या | कारण | समाधान |
| ParseException | स्ट्रिंग पैटर्न से मेल नहीं खाती | पैटर्न सत्यापित करें, इनपुट जांचें |
| गलत तिथि | गलत पैटर्न (उदाहरण: MM बनाम mm) | पैटर्न अक्षरों की दोबारा जांच करें |
| समय क्षेत्र समस्या | डिफ़ॉल्ट समय क्षेत्र अलग | timeZone विशेषता निर्दिष्ट करें |
| स्थानीय समस्या | महीना नाम भाषा मेल नहीं खाता | parseLocale निर्दिष्ट करें |
सर्वोत्तम अभ्यास
- हमेशा
pattern निर्दिष्ट करें जब इनपुट प्रारूप निश्चित हो
var और scope का उपयोग करके पार्स की गई तिथि को बाद के उपयोग के लिए संग्रहीत करें
- उपयोगकर्ता इनपुट पार्स करते समय त्रुटि संचालन पर विचार करें (JSP में कठिन, कंट्रोलर में बेहतर)
- आंतरिक प्रसंस्करण के लिए ISO 8601 प्रारूप (
yyyy-MM-dd) पसंद करें