CodeGym /جاوا بلاگ /Random-UR /وقت میں گم نہ ہونے کا طریقہ: ڈیٹ ٹائم اور کیلنڈر
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 May 30 04:20:12 GMT 2008 ہمیں 30 مئی 2008 ملتا ہے۔ "Fri" ہفتے کے دن کی نشاندہی کرتا ہے (جمعہ، duh)، اور GMT ٹائم زون (گرین وچ مین ٹائم) ہے۔ ملی سیکنڈز کو s کے طور پر پاس کیا جاتا ہے long، کیونکہ ملی سیکنڈز کی تعداد عام طور پر ایک میں فٹ نہیں ہوتی ہے int۔ تو، تاریخوں کے ساتھ ہمیں کون سے آپریشن کرنے کی ضرورت پڑ سکتی ہے؟ ٹھیک ہے، سب سے واضح، یقینا، موازنہ ہے . اس بات کا تعین کرنے کے لیے کہ آیا ایک تاریخ دوسری سے پہلے آتی ہے یا بعد میں۔ یہ کئی طریقوں سے کیا جا سکتا ہے۔ مثال کے طور پر، آپ اس Date.getTime()طریقہ کو کال کر سکتے ہیں، جو 1 جنوری 1970 کی آدھی رات سے گزرنے والے ملی سیکنڈز کی تعداد کو لوٹاتا ہے۔ اسے صرف دو Date اشیاء پر کال کریں اور نتائج کا موازنہ کریں:
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 date2 سے پہلے کا ہے لیکن ایک زیادہ آسان طریقہ بھی ہے، یعنی Date کلاس کے ذریعہ فراہم کردہ خصوصی طریقوں کا استعمال کرتے ہوئے: before(), after()اور 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()طریقہ درست واپس آ جائے گا! آخر کار، یہ ہر تاریخ کے لیے یکم جنوری 1970 کو 00:00 سے ملی سیکنڈز کی تعداد کا موازنہ کرتا ہے ۔ اشیاء کو صرف اسی صورت میں برابر سمجھا جاتا ہے جب وہ ملی سیکنڈ سے مماثل ہوں :
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));
}
یہاں ایک اور چیز ہے جس پر آپ کو توجہ دینے کی ضرورت ہے۔ اگر آپ اوریکل Date ویب سائٹ پر کلاس کے لیے دستاویزات کھولتے ہیں ، تو آپ دیکھیں گے کہ اس کے بہت سے طریقوں اور کنسٹرکٹرز کو فرسودہ (یعنی استعمال کے لیے تجویز کردہ نہیں) کے بطور نشان زد کیا گیا ہے۔ جاوا کے تخلیق کاروں کا کلاسوں کے ان حصوں کے بارے میں کیا کہنا ہے جو فرسودہ ہو چکے ہیں:
"ایک پروگرام عنصر کی تشریح کردہ @ 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);
}
کلاس میں Calendar(نیز Dateاس معاملے کے لیے کلاس)، مہینے صفر سے شروع ہوتے ہیں ، اس لیے ہم نمبر 0 کو دوسری دلیل کے طور پر پاس کرتے ہیں۔ کلاس کے ساتھ کام کرتے وقت Calendar، یہ سمجھنا ضروری ہے کہ یہ صرف ایک کیلنڈر ہے ، انفرادی تاریخ نہیں۔ وقت میں گم نہ ہونے کا طریقہ: ڈیٹ ٹائم اور کیلنڈر - 3 ایک تاریخ صرف چند نمبر ہے جو ایک مخصوص وقت کے وقفے کی نشاندہی کرتی ہے۔ کیلنڈر ایک پورا نظام ہے جو آپ کو تاریخوں کے ساتھ بہت کچھ کرنے دیتا ہے۔ :) اگر آپ آبجیکٹ کو ظاہر کرنے کی کوشش کرتے ہیں تو یہ کافی حد تک ظاہر ہوتا ہے Calendar: آؤٹ پٹ: java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=false,lenient=true,zone=sun.util.calendar.ZoneInfo[id= "یورپ/لندن", آفسیٹ=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,OFF_MONTH=0,MINUTE=0,OFF_COND=0,SECOND=0, SECOND=0? ایف ایس ای ٹی =؟] دیکھیں کہ آپ کو کتنی معلومات ملتی ہیں! ایک کیلنڈر میں خصوصیات کا ایک گروپ ہوتا ہے جو عام تاریخ میں نہیں ہوتا ہے، اور وہ سب دکھائے جاتے ہیں ( کلاس 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 کا مطلب اپریل ہے، نہ کہ تیسرا مہینہ، جسے ہم مارچ کہنا پسند کرتے ہیں۔ بس Calendar.APRIL لکھیں، اور آپ کا کام ہو گیا۔ :) تمام کیلنڈر فیلڈز (نمبر، مہینہ، منٹ، سیکنڈ وغیرہ) کو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ایک "سپر گیٹر" بھی ہے " :) یقیناً اس طبقے کا ایک اور دلچسپ پہلو عہد کے ساتھ کام کرنا ہے۔ "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