2010-03-29 16 views
21

मैं जावा में माया कैलेंडर का उपयोग कैसे कर सकता हूं?जावा में माया कैलेंडर

+12

Y2012 समस्या के बारे में इस है

यहाँ कोर हिस्से हैं? – Thilo

+0

एलओएल एक अच्छा –

+3

ईमानदारी से सबसे अच्छा सवाल है। – ponzao

उत्तर

0

एलओएल, 21 दिसंबर 2012 को अंतिम चयन योग्य तिथि निर्धारित करने का प्रयास करें? लेकिन वास्तव में वहां खत्म नहीं होता है, यह अभी शुरू होता है ताकि आप 21 दिसंबर 2012 के बाद फिर से गिनना शुरू करना चाहते हैं?

1

जावा में अन्य कैलेंडर/क्रोनोलॉजीज़ का उपयोग करने का सबसे अच्छा तरीका उत्कृष्ट Joda-Time लाइब्रेरी है। इसमें माया क्रोनोलॉजी नहीं है, लेकिन आप माया नियमों के अपने कार्यान्वयन को सही कर सकते हैं और इसे प्लग कर सकते हैं। बहुत कठिन नहीं होना चाहिए।

+2

यह सुनिश्चित नहीं है कि यह इतना आसान है, यहां तक ​​कि जॉन स्कीट ने भी पेंट किया: http://msmvps.com/blogs/jon_skeet/archive/2009/11/06/noda-time-is-born.aspx#1738663 – Thilo

+0

वह सीधे लिख रहा है बंदरगाह, और नई क्रोनोलॉजीज जैसी अतिरिक्त सुविधाओं के बजाय उस पर ध्यान केंद्रित करना चाहता है। मुझे लगता है कि यह काफी उचित है, यह संकेत दिए बिना कि एक नई कालक्रम लिखना कितना मुश्किल होगा। मनोरंजन के लिए – GaryF

1

JodaTime का उपयोग करें। ओह, क्षमा करें, java.util.Calendar के बारे में कोई प्रश्न पढ़ने पर केवल एक प्रतिबिंब ;-)

वेब पर कुछ Java applets हैं जो आपके लिए सहायक हो सकते हैं।

6

क्या आपका कैलेंडर अब समाप्त हो गया है? :-)

+3

+1 –

1

यदि आप वास्तव में समाधान की तलाश में हैं तो यह Maya Calendar implementation काफी अच्छा लगता है।

यह जावा के GregorianCalendar का उपयोग कर एक माया Tzolk'in calender लागू करता है। ग्रेगोरियन या टोजोकिन प्रारूप दोनों में तिथियां पुनर्प्राप्त की जा सकती हैं। किसी भी मामले में

[...] 
/** parses Date specified in Long Count format, e.g. "12.19.19.17.19" */ 
public void parseLongCountDate (String longCountDate) { 
    String [] components = longCountDate.split("\\."); 
    try { 
      if (components.length != 5) 
       throw new Exception("Expecting 5 numbers separated by dots"); 
      int baktuns = Integer.valueOf(components[0]); 
      int katuns = Integer.valueOf(components[1]); 
      int tuns = Integer.valueOf(components[2]); 
      int winals = Integer.valueOf(components[3]); 
      int kins = Integer.valueOf(components[4]); 
      set (baktuns, katuns, tuns, winals, kins); 
    } catch (Throwable e) { 
      throw new IllegalArgumentException("Invalid long count date format: " 
      + e.getMessage()); 
    } 
} 

/** Set date to given long count date */ 
public void set (int baktuns, int katuns, int tuns, int uinals, int kins) { 
    assert MayaTimeUnit.Kin.toDays (1) == 1; 
    daysSinceGreatCycle = 
      MayaTimeUnit.Baktun.toDays (baktuns) + 
      MayaTimeUnit.Katun.toDays(katuns) + 
      MayaTimeUnit.Tun.toDays(tuns) + 
      MayaTimeUnit.Winal.toDays(uinals) + 
      kins; 
} 

[...] 

/** @return day name number in Tzolk'in calendar, e.g. it returns 0 (Ajaw) for the day "4 Ajaw" */ 
public Tzolkin toTzolkinDayName() { 
    // The Tzolk'in date is counted forward from 4 Ajaw. 
    return Tzolkin.DAYS[(daysSinceGreatCycle + 19) % 20]; // relative to Ajaw 
} 

/** @return day number in Tzolk'in calendar, e.g. it returns 4 for the day "4 Ajaw" */ 
public int toTzolkinDayNumber() { 
    // The Tzolk'in date is counted forward from 4 Ajaw. 
    return (daysSinceGreatCycle + 4) % 13; 
} 
[...] 

/** @return day name number in Haab calendar, e.g. it returns Yaxkin (5) for the day "14 Yaxk'in" */ 
public Haab toHaabDayName() { 
    int d = (daysSinceGreatCycle + 349) % 365; 
    return Haab.DAYS[d/20]; 
} 

/** @return day number in Haab calendar, e.g. it returns 14 for the day "14 Yaxk'in" */ 
public int toHaabDayNumber() { 
    int d = (daysSinceGreatCycle + 349) % 365; 
    return d % 20 - 1; 
} 
[...] 

/** @return Gregorian calendar representation of currently set date */ 
public String toGregorianString() { 
    Calendar c = toGregorianDate(); 
    return format.format(c.getTime()); 
} 

/** @return Converts currently defined date into Gregorian calendar */ 
public Calendar toGregorianDate() { 
    Calendar c = (Calendar)greatCycleStartDate.clone(); 
    c.add(Calendar.DAY_OF_YEAR, daysSinceGreatCycle); 
    return c; 
} 
[...] 

: कूल सवाल :-)

संबंधित मुद्दे