java - जावा-मिलीसेकंड से महीना/वर्ष(न सिर्फ वर्तमान समय)
calendar milliseconds (3)
ऐसा करने का सबसे आसान तरीका है java.util.Calendar
वर्ग का उपयोग करने के लिए जैसा कि आप अपने प्रश्न में उल्लेख करते हैं। आप आसानी से उपयोग करके एक उदाहरण प्राप्त कर सकते हैं
//use whatever time zone your milliseconds originiate from
//there is another getter that takes a Locale, which may be useful depending on your context
Calander c = Calendar.getInstance(TimeZone.getDefault());
फिर आप का प्रयोग करके समय निर्धारित कर सकते हैं
c.setTimeInMillis(t);
जब यह पता लगाया गया था कि आप DateFormat
ऑब्जेक्ट का उपयोग करके परिणाम प्रिंट कर सकते हैं
DateFormat df = DateFormat.getInstance(DateFormat.SHORT);
System.out.println(df.format(c.getTime());
महीनों (या समय के किसी अन्य इकाई) के माध्यम से जाने के लिए, आप माह फ़ील्ड का उपयोग करके कैलेंडर में "जोड़" करेंगे:
c.add(Calendar.MONTH, -2);
अच्छी खबर यह है कि आप किसी अन्य समय इकाई के लिए add()
पद्धति का उपयोग कर सकते हैं और Calendar
वर्ग, जिस तरह से आप की अपेक्षा की जाती है, ठीक उसी तरह की तारीख को समायोजित करने का ध्यान रखेगा (यानी, सांस्कृतिक रूप से उचित तरीके से Locale
द्वारा परिभाषित Calendar
)
अन्त में, आप इसका उपयोग करके मिलीसेकेंड में वापस कर सकते हैं
long newTime = c.getTimeInMillis();
कहते हैं, मेरे पास जावा में एक एल्गोरिथ्म है, जहां मैं हर वस्तु के साथ जुड़े समय के आधार पर मासिक आधार पर कुछ करना चाहता हूं।
उदाहरण के लिए, यदि Object a
का समय long t
, और युग युग के बाद से मिलीसेकंड में है, तो मुझे कैसे पता चलेगा कि t
03/2014 में एक समय है?
एक द्वितीयक प्रश्न के रूप में, मैं कई महीनों से पिछली बार समय-समय पर कैसे पुनरावृत्त हो सकता हूं - इसलिए यदि 1 मई, 2014 से शुरू हो रहा है, तो मैं पूरी तरह से अप्रैल, मार्च, फरवरी आदि में वापस कैसे जा सकता हूं, बिना किसी समस्या की चिंता किए बिना 28 - 31 महीने एक महीने में? मैं Calendar
वर्ग का उपयोग करने पर विचार कर रहा था, लेकिन मुझे यकीन नहीं था कि मैं केवल MONTH
चर को अद्यतन कर सकता हूं और मुझे सही मिलीसेकंड मान दे सकता है। जैसे, यह 31 मार्च का है, और मैं फरवरी से महीने का अद्यतन करता हूं, और फिर अचानक यह सोचता है कि यह 31 फरवरी है?
java.time
में जावा 8 एपीआई का उपयोग करके आप निम्न java.time
कर सकते हैं:
import java.time.Instant;
import java.time.Month;
import java.time.MonthDay;
import java.time.OffsetDateTime;
public static void main(String[] args) {
long ms_since_epoch = 1_500_000_000_000L;
Instant instant = Instant.ofEpochMilli(ms_since_epoch);
// convert milliseconds in UTC to date
OffsetDateTime dateUTC = OffsetDateTime.ofInstant(instant, ZoneOffset.UTC);
// convert milliseconds in EST (UTC-0500) to date
OffsetDateTime dateEST = OffsetDateTime.ofInstant(instant, ZoneOffset.ofHours(-5));
// note: this is 2017-07-14 at 2:40
// create a MonthDay from the date in EST
MonthDay monthDay = MonthDay.of(dateEST.getMonth(), dateEST.getDayOfMonth());
// note: this is 2017-07-13 at 21:40
// loop over the next six months, after monthDay from dateEST
MonthDay md = monthDay;
for (int i = 0; i < 6; ++i) {
md = md.with(md.getMonth().plus(1));
System.out.println(md);
// prints 08-13 through 01-14 (August 2013 through January 2014)
}
// loop over the previous six months, including this month
md = monthDay;
for (int i = 0; i < 6; ++i) {
System.out.println(md);
md = md.with(md.getMonth().minus(1));
// prints 07-13 through 02-13 (July 2013 through February 2013)
}
}
ध्यान दें कि महीनादिवस अपरिवर्तनीय है, इसलिए md.with(otherMonth)
हुए महीने के साथ एक नया उदाहरण लौटाता है, और यह केवल एक महीने और एक दिन का प्रतिनिधित्व करता है, न कि वर्ष, समय और समय क्षेत्र के साथ एक पूर्ण तिथि। यह भी ध्यान दें कि टाइमस्टैम्प को परिवर्तित करने के लिए समय क्षेत्र के आधार पर एक अलग तारीख और समय अर्जित करता है, जो Calendar
साथ भी सत्य होगा।
मुझे लगता है कि आपके पहले प्रश्न का जवाब यहां दिया गया है कि जावा को समय प्रारूप में मिलीसेकंड परिवर्तित किया गया है
आपको केवल एक नया Date
ऑब्जेक्ट बनाने और निर्माता को टाइमस्टैम्प पास करने की आवश्यकता है। तो आप वांछित तारीख को प्रारूपित कर सकते हैं