java - जावा में जलाली कैलेंडर के लिए एक अच्छी तारीख कनवर्टर?




date localization (4)

मैं एक जावा ऐप विकसित कर रहा हूं और मेरे पास एक timeStamp ( long ) है। मैं इसे आसानी से ग्रेगोरियन तिथि में बदलने के लिए इस कोड का उपयोग कर सकता हूं:

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timeStamp);

लेकिन मुझे जलाली कैलेंडर में तारीख की जरूरत है। मैंने खोज की लेकिन कोई अच्छी लाइब्रेरी नहीं मिली। क्या आप timeStamp से (या जलाली प्रारूप में दिनांक बनाने के लिए) एक विश्वसनीय और अच्छी लाइब्रेरी जानते हैं? मुझे एक कार्यान्वयन या एक एल्गोरिथ्म की आवश्यकता नहीं है, क्योंकि यह समस्या बहुत छोटी है और इसमें बहुत सारे नियम हैं, मुझे एक विश्वसनीय समाधान की आवश्यकता है


आप JalCal उपयोग कर सकते हैं कि जलाली (फारसी) जावा में कैलेंडर कन्वर्टर:

<dependency>
    <groupId>com.github.sbahmani</groupId>
    <artifactId>jalcal</artifactId>
    <version>1.0</version>
</dependency>

1. जलाली टू ग्रेगोरियन

  Calendar expected4 = Calendar.getInstance(TimeZone.getDefault());
  expected4.set(2014, 7, 5, 1, 23, 1);
  assertThat(JalCal.jalaliToGregorian(1393, 5, 14, 1, 23, 1).toString()).isEqualTo(expected4.getTime().toString());

2. ग्रेगोरियन से जलाली

    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.DAY_OF_MONTH, 5);
    cal.set(Calendar.MONTH, 6);
    cal.set(Calendar.YEAR, 2014);
    cal.set(Calendar.HOUR_OF_DAY, 10);
    cal.set(Calendar.MINUTE, 25);
    cal.set(Calendar.SECOND, 1);
    cal.set(Calendar.MILLISECOND, 0);
    assertThat(JalCal.gregorianToJalali(cal.getTime(), true)).isEqualTo("14/04/1393   10:25:01");
    assertThat(JalCal.gregorianToJalali(new Date(1426883400000l), true)).isEqualTo("01/01/1394   00:00:00");

आप एक चित्रमय जावा-आधारित जलाली कैलेंडर प्राप्त कर सकते हैं जिसे persain-calendar कहा जाता है। यहाँ फ़ारसी-कैलेंडर का एक स्क्रीनशॉट है।


जीथुब पर एक अच्छा पुस्तकालय है, जिसमें एक बहुत ही साधारण एपीआई है और इसमें बहुत सारी क्षमताएं हैं और यह मावन केंद्र पर भी उपलब्ध है:

https://github.com/razeghi71/JalaliCalendar


बेहतर स्थानीयकरण और भाषा समर्थन के लिए, आईबीएम से ICU (यूनिकोड के लिए अंतर्राष्ट्रीय घटक) पुस्तकालय का उपयोग करना अक्सर सुविधाजनक होता है।

एपीआई मानक जावा एपीआई के समान हैं, लेकिन स्थानीयकरण और अंतर्राष्ट्रीयकरण (जैसे समय और कैलेंडर के मुद्दों, छँटाई, नियमों को प्रारूपित करना और उचित यूनिकोड समर्थन के साथ एक regex कार्यान्वयन) के लिए अतिरिक्त समर्थन जोड़ते हैं।

फ़ारसी कैलेंडर बनाने और फ़ारसी में स्वरूपित तारीख को आउटपुट करने के लिए, आप कुछ ऐसा करना चाहेंगे:

import com.ibm.icu.text.DateFormat;
import com.ibm.icu.util.Calendar;
import com.ibm.icu.util.ULocale;

...

ULocale locale = new ULocale("[email protected]=persian");

Calendar calendar = Calendar.getInstance(locale);
DateFormat df = DateFormat.getDateInstance(DateFormat.FULL, locale);

System.out.println(df.format(calendar));

यह आउटपुट होगा:

چهارشنبه ۱۰ اردیبهشت ه ه'.ش





jalali-calendar