CodeGym /جاوا بلاگ /Random-SD /ڪيئن نه وڃجي وقت ۾: تاريخ جو وقت ۽ ڪئلينڊر
John Squirrels
سطح
San Francisco

ڪيئن نه وڃجي وقت ۾: تاريخ جو وقت ۽ ڪئلينڊر

گروپ ۾ شايع ٿيل
سلام اڄ اسان هڪ نئين ڊيٽا جي قسم سان ڪم ڪرڻ شروع ڪنداسين جيڪو اسان اڳ ۾ نه ڏٺو آهي، يعني تاريخون. وقت ۾ ڪيئن نه وڃائجي: تاريخ جو وقت ۽ ڪئلينڊر - 1مان نه ٿو سمجهان ته مون کي وضاحت ڪرڻ جي ضرورت آهي ته تاريخ ڇا آهي. :) اصول ۾، اسان موجوده تاريخ ۽ وقت کي هڪ عام جاوا اسٽرنگ ۾ محفوظ ڪري سگهون ٿا.
public class Main {
   public static void main(String[] args) {

       String date = "June 11, 2018";
       System.out.println(date);
   }
}
پر هن طريقي ۾ ڪيترائي نقصان آهن. ڪلاس Stringمتن سان ڪم ڪرڻ لاءِ ٺهيل آهي، ۽ ان جا طريقا هن ڪم لاءِ مناسب آهن. جيڪڏهن اسان کي ڪنهن طريقي سان تاريخ کي هٿي ڏيڻ جي ضرورت آهي (مثال طور 2 ڪلاڪ شامل ڪريو)، Stringايترو سٺو ڪم نٿو ڪري. يا جيڪڏهن اسان موجوده تاريخ ۽ وقت ڏيکارڻ چاهيون ٿا جڏهن پروگرام مرتب ڪيو ويو آهي. Stringهتي به مدد نٿو ڪري: جڏهن توهان ڪوڊ لکندا ۽ ان کي هلائيندا، وقت تبديل ٿي ويندو ۽ ڪنسول غلط معلومات ڏيکاريندو. ان ڪري جاوا جي تخليقڪارن تاريخن ۽ وقت سان ڪم ڪرڻ لاءِ ڪيترائي ڪلاس مهيا ڪيا. انهن مان پهريون آهيjava.util.Date

تاريخ ڪلاس

اسان ان جو پورو نالو بيان ڪيو، ڇاڪاڻ ته ٻئي جاوا پيڪيج ۾ java.sql.Dateڪلاس آهي. ان کي گڏ نه ڪريو! پهرين شيء جيڪا توهان کي ان جي باري ۾ ڄاڻڻ جي ضرورت آهي اها اها آهي ته اها تاريخ کي محفوظ ڪري ٿي مليس سيڪنڊن جي تعداد جي طور تي جيڪي 1 جنوري 1970 کان گذري ويا آهن. هن وقت سسٽم کي پڻ پنهنجو نالو آهي: " يونڪس-ٽائم " هڪ بلڪه دلچسپ طريقو، هوندو. توهان متفق آهيو؟ :) ياد رکڻ جي لائق ٻي شيءِ هي آهي: جيڪڏهن توهان ڊفالٽ ڪنسٽرڪٽر استعمال ڪندي هڪ شئي ٺاهي Date، نتيجو موجوده تاريخ ۽ وقت جي نمائندگي ڪري ٿو جڏهن اعتراض ٺاهيو ويو هو . ياد رکو ته اسان چيو آهي ته هڪ تاريخ جي نمائندگي ڪندي Stringاهڙي ڪم سان جدوجهد ڪندو؟ ڪلاس Dateان کي آسانيء سان سنڀاليندو آهي.
public class Main {
   public static void main(String[] args) {

       Date date = new Date();
       System.out.println(date);
   }
}
ھن ڪوڊ کي ڪيترائي ڀيرا ھلايو، ۽ توھان ڏسندؤ ته وقت بار بار تبديل ٿيندو. :) اهو ممڪن آهي ڇاڪاڻ ته وقت مليس سيڪنڊن جي طور تي ذخيرو ٿيل آهي: اهي وقت جا انتهائي ننڍا يونٽ آهن، تنهنڪري نتيجا انتهائي درست آهن. ڪلاس Dateٻيو ٺاھيندڙ: توھان 1 جنوري 1970 تي 00:00 کان وٺي گھربل تاريخ تائين مليس سيڪنڊن جو صحيح تعداد پاس ڪري سگھو ٿا، ۽ ھڪڙي لاڳاپيل تاريخ اعتراض ٺاھيو ويندو:
public class Main {
   public static void main(String[] args) {

       Date date = new Date(1212121212121L);
       System.out.println(date);
   }
}
ڪنسول آئوٽ: Fri مئي 30 04:20:12 GMT 2008 اسان کي مئي 30، 2008 ملي ٿو. "Fri" هفتي جي ڏينهن کي ظاهر ڪري ٿو (جمعو، duh)، ۽ GMT ٽائيم زون آهي (گرين ويچ مين ٽائيم). مليس سيڪنڊن کي s جي طور تي منظور ڪيو ويو آهي long، ڇاڪاڻ ته مليسڪنڊن جو تعداد عام طور تي هڪ int. تنهن ڪري، تاريخن سان ڪهڙيون آپريشنون اسان کي انجام ڏيڻ گهرجن؟ خير، سڀ کان وڌيڪ واضح، يقينا، مقابلو آهي . اهو طئي ڪرڻ لاءِ ته هڪ تاريخ اڳي اچي يا ٻي بعد ۾. اهو ڪيترن ئي طريقن سان ڪري سگهجي ٿو. مثال طور، توھان ان Date.getTime()طريقي کي ڪال ڪري سگھو ٿا، جيڪو 1 جنوري 1970ع جي اڌ رات کان وٺي مليس سيڪنڊن جو تعداد موٽائي ٿو. بس ان کي ڪال ڪريو ٻن تاريخن شين تي ۽ نتيجن جو مقابلو ڪريو:
public class Main {
   public static void main(String[] args) {

       Date date1 = new Date();

       Date date2 = new Date();

       System.out.println((date1.getTime() > date2.getTime())?
               "date1 is later than date2" : "date1 is earlier than date2");
   }
}
ٻاھر نڪتو: date1 تاريخ 2 کان اڳ آھي پر ھڪڙو وڌيڪ آسان طريقو پڻ آھي، يعني خاص طريقن کي استعمال ڪندي جيڪو تاريخ ڪلاس پاران مهيا ڪيل آھي: before(), after()and equals(). اهي سڀئي هڪ بوليان قدر واپس آڻيندا آهن. طريقو before()چيڪ ڪري ٿو ته ڇا اسان جي تاريخ دليل جي طور تي منظور ٿيل تاريخ کان اڳ آهي:
public class Main {
   public static void main(String[] args) throws InterruptedException {

       Date date1 = new Date();

       Thread.sleep(2000);// Suspend the program for 2 seconds
       Date date2 = new Date();

       System.out.println(date1.before(date2));
   }
}
ڪنسول آئوٽ: صحيح ساڳئي طرح، after()طريقو چيڪ ڪري ٿو ته ڇا اسان جي تاريخ دليل جي طور تي منظور ٿيل تاريخ کان پوء آهي:
public class Main {
   public static void main(String[] args) throws InterruptedException {

       Date date1 = new Date();

       Thread.sleep(2000);// Suspend the program for 2 seconds
       Date date2 = new Date();

       System.out.println(date1.after(date2));
   }
}
ڪنسول آئوٽ: غلط اسان جي مثالن ۾، اسان 2 سيڪنڊن لاءِ ”پروگرام کي سمهڻ لاءِ“ رکون ٿا، ته جيئن ٻن تاريخن جي مختلف ٿيڻ جي ضمانت ڏني وڃي. تيز ڪمپيوٽرن تي، ٺاھڻ جي وچ ۾ وقت date1۽ date2ھڪڙي مليسيڪنڊ کان گھٽ ٿي سگھي ٿو، ٻئي before()۽ after()غلط موٽڻ سبب. پر هن معاملي ۾، equals()طريقو سچو موٽندو! آخرڪار، اهو هر تاريخ لاءِ 00:00 جنوري 1، 1970 کان مليس سيڪنڊن جي تعداد جو مقابلو ڪري ٿو . شيون صرف برابر سمجھي وينديون آھن جيڪڏھن اھي مليس سيڪنڊ سان ملن :
public static void main(String[] args) {

   Date date1 = new Date();
   Date date2 = new Date();

   System.out.println(date1.getTime());
   System.out.println(date2.getTime());

   System.out.println(date1.equals(date2));
}
هتي هڪ ٻي شيء آهي جنهن تي توهان کي ڌيان ڏيڻ جي ضرورت آهي. جيڪڏهن توهان Oracle Date ويب سائيٽ تي ڪلاس لاءِ دستاويز کوليو ٿا ، توهان ڏسندؤ ته ان جا ڪيترائي طريقا ۽ تعمير ڪندڙن کي نشانو بڻايو ويو آهي Deprecated (يعني استعمال لاءِ سفارش ٿيل ناهي). هتي اهو آهي ته جاوا جي تخليق ڪندڙن کي ڪلاس جي حصن بابت ڇا چوڻ آهي جيڪي ختم ڪيا ويا آهن:
"هڪ پروگرام جو عنصر تشريح ڪيل @ Deprecated آهي ڪجهه پروگرامرن کي استعمال ڪرڻ جي سفارش نه ڪئي وئي آهي، عام طور تي ڇاڪاڻ ته اهو خطرناڪ آهي، يا ڇاڪاڻ ته هڪ بهتر متبادل آهي."
هن جو مطلب اهو ناهي ته اهي طريقا استعمال نٿا ڪري سگهجن. جيڪڏهن توهان ڪوڊ هلائڻ جي ڪوشش ڪريو ڪوڊ استعمال ڪندي هڪ IDE ۾ ختم ٿيل طريقن سان، اهو گهڻو ڪري ڪم ڪندو مثال طور، ختم ٿيل طريقي تي غور ڪريو ، جيڪو هڪ اعتراض Date.getHours()سان لاڳاپيل ڪلاڪن جو تعداد ڏي ٿو .Date
public static void main(String[] args) {

   Date date1 = new Date();

   System.out.println(date1.getHours());
}
جيڪڏهن توهان ڪوڊ 14:21 (2:21 PM) تي شروع ڪيو، اهو نمبر 14 ڏيکاريندو. جيئن توهان ڏسي سگهو ٿا، ختم ٿيل طريقو ختم ٿي ويو آهي، پر اهو اڃا تائين ڪم ڪري ٿو. اهي طريقا ختم نه ڪيا ويا آهن ته جيئن موجوده ڪوڊ جي وڏي جسم کي ٽوڙڻ نه ڏيو جيڪي انهن کي استعمال ڪن ٿا. ٻين لفظن ۾، اهي طريقا نه "ٽڙيل" آهن ۽ نه "هٽائي" آهن. اهي صرف استعمال لاء سفارش نه آهن ڇو ته هڪ وڌيڪ آسان متبادل موجود آهي. اتفاق سان، دستاويز خاص طور تي هن متبادل جو ذڪر ڪري ٿو:
وقت ۾ ڪيئن نه وڃائجي: تاريخ جو وقت ۽ ڪئلينڊر - 2
ڪلاس جا گھڻا Dateطريقا سڌريل ۽ وڌايل Calendarطبقي ۾ منتقل ڪيا ويا آھن. اسان اڳتي هلي ان ڪلاس کان واقف ٿينداسين. :)

ڪئلينڊر ڪلاس

JDK 1.1 هڪ نئون ڪلاس متعارف ڪرايو: Calendar. اهو جاوا ۾ تاريخن سان ڪم ڪرڻ کان اڳ ۾ ڪجهه آسان بڻائي ڇڏيو. ڪلاس جو واحد عمل Calendarجنهن سان اسين ڪم ڪنداسين اهو GregorianCalendarطبقو آهي. اهو گريگورين ڪئلينڊر کي لاڳو ڪري ٿو، جيڪو دنيا جي اڪثر ملڪن طرفان مشاهدو ڪيو ويندو آهي. ان جو بنيادي فائدو اهو آهي ته اهو تاريخن سان ڪم ڪري سگهي ٿو وڌيڪ آسان فارميٽ ۾. مثال طور، اهو ڪري سگهي ٿو:
  • موجوده تاريخ ۾ هڪ مهينو يا ڏينهن شامل ڪريو
  • چيڪ ڪريو ته ڇا سال هڪ ليپ سال آهي؛
  • تاريخ جا انفرادي حصا واپس ڪريو (مثال طور، سڄي تاريخ مان مهيني جو نمبر ڪڍو)
  • اهو پڻ هڪ تمام آسان سسٽم تي مشتمل آهي مستقل (جن مان ڪيترائي اسان هيٺ ڏسندا).
ڪلاس جو ٻيو اهم واڌارو ان جو Calendar.ERACalendar مستقل آهي : توهان عام دور (BC - مسيح کان اڳ) يا عام دور (AD - Anno Domini) کان اڳ واري تاريخ کي ظاهر ڪري سگهو ٿا. اچو ته اهو سڀ ڪجهه مثالن سان ڏسو. اچو ته 25 جنوري 2017 جي تاريخ سان هڪ اعتراض ٺاهيو: calendar
public static void main(String[] args) {

  Calendar calendar = new GregorianCalendar(2017, 0 , 25);
}
ڪلاس ۾ CalendarDateانهي معاملي لاءِ ڪلاس)، مهينا صفر کان شروع ٿين ٿا ، تنهنڪري اسان نمبر 0 کي ٻئي دليل طور پاس ڪريون ٿا. جڏهن Calendarڪلاس سان ڪم ڪري رهيا آهيو، اهو سمجهڻ ضروري آهي ته اهو صرف اهو آهي، هڪ ڪئلينڊر ، انفرادي تاريخ نه. وقت ۾ ڪيئن نه وڃائجي: تاريخ جو وقت ۽ ڪئلينڊر - 3 هڪ تاريخ صرف چند انگ آهي جيڪي هڪ مخصوص وقت جي وقفي کي ظاهر ڪن ٿا. هڪ ڪئلينڊر هڪ مڪمل سسٽم آهي جيڪو توهان کي تاريخن سان ڪيتريون ئي شيون ڪرڻ جي اجازت ڏئي ٿو. :) اهو گهڻو ڪري ظاهر آهي جيڪڏهن توهان Calendarاعتراض کي ظاهر ڪرڻ جي ڪوشش ڪريو: Output: java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=false,lenient=true,zone=sun.util.calendar.ZoneInfo[id= "يورپ/لنڊن"، offset=0،dstSavings=0،useDaylight=false,transitions=79,lastRule=null],FirstDayOfWeek=2,minimalDaysInFirstWeek=1,ERA=?,YEAR=2017,MONTH=0,WEEK=YEEK_? ,WEEK_OF_MONTH=?,DAY_OF_MONTH=25,DAY_OF_YEAR=?,DAY_OF_WEEK=?,DAY_OF_WEEK_IN_MONTH=?,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,OFD_OF_DAY=0,MINUTE=0,OFD_CONST=0,OFD_CONST=0,FMCONST=0؟ FSET =؟] ڏسو ته توهان کي ڪيتري ڄاڻ ملي ٿي! هڪ ڪئلينڊر ۾ ملڪيتن جو هڪ گروپ هوندو آهي جيڪا عام تاريخ نه هوندي آهي، ۽ اهي سڀئي ڏيکاريا ويندا آهن (هي طريقو ڪلاس toString()۾ ڪيئن ڪم ڪندو آهي Calendar). جيڪڏهن توهان کي صرف ڪئلينڊر مان هڪ سادي تاريخ حاصل ڪرڻ جي ضرورت آهي، يعني هڪ Dateاعتراض، طريقو استعمال ڪريو Calendar.getTime()(نالو سڀ کان وڌيڪ منطقي ناهي، پر توهان ڇا ڪري سگهو ٿا؟):
public static void main(String[] args) {

   Calendar calendar = new GregorianCalendar(2017, 0 , 25);
   Date date = calendar.getTime();
   System.out.println(date);
}
ٻاھر نڪتو: اربع جنوري 25 00:00:00 GMT 2017 ھاڻي اسان ڪئلينڊر ورتو آھي ۽ "گھٽايو" ھڪڙي عام تاريخ ڏانھن. اچو ته اڳتي وڌون. مھينن کي انھن جي تعداد جي حساب سان ترتيب ڏيڻ کان علاوه، توھان استعمال ڪري سگھو ٿا Calendarڪلاس جي مسلسل فيلڊ ويلز . اهي مستقل ڪلاس جا جامد شعبا آهن Calendarجن کي اڳواٽ قدر سان تبديل نٿو ڪري سگهجي. اهو اصل ۾ هڪ بهتر اختيار آهي، ڇاڪاڻ ته انهن کي استعمال ڪندي توهان جي ڪوڊ جي پڙهڻ جي صلاحيت کي بهتر بڻائي ٿو.
public static void main(String[] args) {
   GregorianCalendar calendar = new GregorianCalendar(2017, Calendar.JANUARY , 25);
}
Calendar.JANUARY انهن مستقلن مان هڪ آهي جيڪي سال جي مهينن جي نمائندگي ڪن ٿا. اهي نالا استعمال ڪندي، ڪو به نه وساريندو، مثال طور، نمبر 3 جو مطلب آهي اپريل، ۽ ٽيون مهينو نه، جنهن کي اسين مارچ سڏين ٿا. بس ڪئلينڊر لکو. اپريل ، ۽ توهان مڪمل ڪيو. :) سڀ ڪئلينڊر فيلڊ (نمبر، مهينو، منٽ، سيڪنڊ، وغيره) الڳ الڳ طريقي سان بيان ڪري سگھجن ٿيونset(). اهو طريقو تمام آسان آهي، ڇاڪاڻ تهCalendarڪلاس ۾ هر فيلڊ لاء هڪ مستقل آهي، ۽ نتيجو ڪوڊ پڙهڻ لاء تمام آسان آهي. آخري مثال ۾، اسان هڪ تاريخ ٺاهي، پر ان لاء هڪ وقت مقرر نه ڪيو. اچو ته وقت مقرر ڪريو 19:42:12
public static void main(String[] args) {
   Calendar calendar = new GregorianCalendar();
   calendar.set(Calendar.YEAR, 2017);
   calendar.set(Calendar.MONTH, 0);
   calendar.set(Calendar.DAY_OF_MONTH, 25);
   calendar.set(Calendar.HOUR_OF_DAY, 19);
   calendar.set(Calendar.MINUTE, 42);
   calendar.set(Calendar.SECOND, 12);

   System.out.println(calendar.getTime());
}
ٻاھر نڪرندڙ: اربع جنوري 25 19:42:12 GMT 2017 اسان set()طريقي کي سڏين ٿا، ھڪڙي مسلسل پاس ڪرڻ (انحصار تي جيڪو اسان تبديل ڪرڻ چاھيو ٿا) ۽ فيلڊ لاء نئين قيمت. اهو ظاهر ٿئي ٿو ته اهو set()طريقو هڪ قسم جو "سپر سيٽر" آهي، جيڪو ڄاڻي ٿو ته قيمت ڪيئن مقرر ڪجي نه صرف هڪ فيلڊ لاء، پر ڪيترن ئي شعبن لاء. :) Calendarڪلاس قدرن کي شامل ڪرڻ ۽ گھٽائڻ جو طريقو استعمال ڪري ٿو add(). توھان پاس ڪريو فيلڊ ۾ جنھن کي توھان تبديل ڪرڻ چاھيو ٿا، ۽ ھڪڙو نمبر (بلڪل ڪيترو توھان چاھيو ٿا شامل ڪريو / موجوده قيمت مان گھٽائڻ). مثال طور، اچو ته هڪ تاريخ حاصل ڪريون جيڪا اسان جي ٺاهيل تاريخ کان 2 مهينا اڳ آهي:
public static void main(String[] args) {
   Calendar calendar = new GregorianCalendar(2017, Calendar.JANUARY , 25);
   calendar.set(Calendar.HOUR, 19);
   calendar.set(Calendar.MINUTE, 42);
   calendar.set(Calendar.SECOND, 12);

   calendar.add(Calendar.MONTH, -2); // To subtract, pass a negative number
   System.out.println(calendar.getTime());
}
ٻاھر نڪتو: جمعو نومبر 25 19:42:12 GMT 2016 تمام سٺو! اسان کي 2 مهينا اڳ تاريخ ملي. اهو نه صرف مهينو تبديل ڪرڻ جو سبب بڻيو: سال پڻ 2017 کان 2016 تائين تبديل ٿي ويو. يقيناً، تاريخون تبديل ڪرڻ وقت، موجوده سال خودڪار طريقي سان ڳڻيو ويندو آهي بغير ڪنهن ضرورت جي توهان کي دستي طور تي ٽريڪ رکڻ جي ضرورت آهي. پر جيڪڏهن ڪجهه سببن لاءِ توهان کي هن رويي کي بند ڪرڻ جي ضرورت آهي، توهان ائين ڪري سگهو ٿا. طريقو باقي قدرن کي متاثر ڪرڻ کان سواءِroll() قدرن کي شامل ۽ گھٽائي سگھي ٿو . مثال طور، هن طرح:
public static void main(String[] args) {
   Calendar calendar = new GregorianCalendar(2017, Calendar.JANUARY , 25);
   calendar.set(Calendar.HOUR, 10);
   calendar.set(Calendar.MINUTE, 42);
   calendar.set(Calendar.SECOND, 12);

   calendar.roll(Calendar.MONTH, -2);
   System.out.println(calendar.getTime());
}
اسان اڳئين مثال وانگر ساڳيو ڪم ڪيو: اسان موجوده تاريخ کان 2 مهينا کنيا. پر ھاڻي ڪوڊ ڪجھ مختلف ڪري ٿو: مھينو جنوري کان نومبر تائين تبديل ٿي چڪو آھي، پر سال اڻڄاتل رھيو آھي - 2017! ٻاھر نڪتو: ڇنڇر نومبر 25 10:42:12 GMT 2017 گڏو گڏ. جيئن اسان مٿي چيو آهي، اسان سڀني Calendarشعبن کي الڳ الڳ حاصل ڪري سگهون ٿا. اسان هن get()طريقي سان ڪندا آهيون:
public static void main(String[] args) {
   GregorianCalendar calendar = new GregorianCalendar(2017, Calendar.JANUARY , 25);
   calendar.set(Calendar.HOUR, 10);
   calendar.set(Calendar.MINUTE, 42);
   calendar.set(Calendar.SECOND, 12);

   System.out.println("Year: " + calendar.get(Calendar.YEAR));
   System.out.println("Month: " + calendar.get(Calendar.MONTH));
   System.out.println("Week in the month: " + calendar.get(Calendar.WEEK_OF_MONTH));// Week in this month?

   System.out.println("Day: " + calendar.get(Calendar.DAY_OF_MONTH));

   System.out.println("Hours: " + calendar.get(Calendar.HOUR));
   System.out.println("Minutes: " + calendar.get(Calendar.MINUTE));
   System.out.println("Seconds: " + calendar.get(Calendar.SECOND));
   System.out.println("Milliseconds: " + calendar.get(Calendar.MILLISECOND));

}
ٻاھر نڪتو: سال: 2017 مهينو: 0 ھفتو مھيني ۾: 5 ڏينھن: 25 ڪلاڪ: 10 منٽ: 42 سيڪنڊ: 12 مليسيڪنڊ: 0 تنھنڪري، ڪلاس جي "سپر-سيٽر" کان علاوه Calendar، ھڪڙو "سپر گيٽر" پڻ آھي ". :) يقينن، هن طبقي جو هڪ ٻيو دلچسپ پاسو eras سان ڪم ڪري رهيو آهي. "BC" جي تاريخ ٺاھڻ لاءِ، توھان کي استعمال ڪرڻو پوندو Calendar.ERA فيلڊ مثال طور، اچو ته ھڪ تاريخ ٺاھيون ڪيني جي جنگ لاءِ، جتي ھننبل رومي فوج کي شڪست ڏني ھئي. اهو واقعو 2 آگسٽ 216 ق.
public static void main(String[] args) {
   GregorianCalendar cannae = new GregorianCalendar(216, Calendar.AUGUST, 2);
   cannae.set(Calendar.ERA, GregorianCalendar.BC);

   DateFormat df = new SimpleDateFormat("MMM dd, yyy GG");
   System.out.println(df.format(cannae.getTime()));
}
هتي اسان SimpleDateFormatتاريخ کي پرنٽ ڪرڻ لاءِ ڪلاس استعمال ڪيو ان فارميٽ ۾ جيڪا اسان لاءِ سمجھڻ ۾ آسان آهي (اکر ”GG“ ظاهر ڪن ٿا ته اسان چاهيون ٿا ته دور ڏيکاريو وڃي). پيداوار: آگسٽ 02، 216 ق. ڪلاس Calendar۾ ڪيترائي وڌيڪ طريقا ۽ مستقل آھن. توھان انھن بابت پڙھي سگھوٿا دستاويز ۾ . جيڪڏهن هي تاريخ فارميٽ پسند نه ڪيو ڇنڇر نومبر 25 10:42:12 GMT 2017 ته پوءِ توهان SimpleDateFormatان کي آساني سان ٺاهڻ لاءِ استعمال ڪري سگهو ٿا جيڪو توهان چاهيو ٿا.
public static void main(String[] args) {

   SimpleDateFormat dateFormat = new SimpleDateFormat("EEEE, MMMM d, yyyy");
   Calendar calendar = new GregorianCalendar(2017, Calendar.JANUARY , 25);
   calendar.set(Calendar.HOUR, 10);
   calendar.set(Calendar.MINUTE, 42);
   calendar.set(Calendar.SECOND, 12);

   calendar.roll(Calendar.MONTH, -2);
   System.out.println(dateFormat.format(calendar.getTime()));
}
ٻاھر نڪتو: ڇنڇر، نومبر 25، 2017 اھو گھڻو بھتر آھي، ڇا اھو آھي؟ :)
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION