التاريخ والوقت في Java: SimpleDateFormat والتاريخ الحالي والمقارنة

في هذا البرنامج التعليمي سوف تتعلم -

دعونا أولا نفهم المعلمات التي تتكون من أ التاريخ.

كيفية استخدام التاريخ في جافا

وسوف تحتوي في المقام الأول على -

  • عام (إما 2 أو 4 أرقام)
  • شهر (إما مكونة من رقمين، أو أول 2 أحرف من الشهر، أو كلمة الشهر بأكملها).
  • تاريخ (سيكون التاريخ الفعلي للشهر).
  • يوم (اليوم في التاريخ المحدد - مثل الأحد، الاثنين، الثلاثاء، إلخ.)

فيما يتعلق بأنظمة الكمبيوتر، هناك الكثير من المعلمات التي يمكن استخدامها لربط التاريخ. وسنراهم في الأجزاء اللاحقة من هذا الموضوع.

عرض التاريخ في جافا

الآن دعونا نرى كيف تزودنا Java بالتاريخ. أولاً، سنرى كيفية الحصول على التاريخ الحالي-

توفر Java فئة التاريخ ضمن الحزمة java.util، وتوفر الحزمة عدة طرق للتعامل مع التاريخ.

يمكنك استخدام كائن التاريخ عن طريق استدعاء مُنشئ فئة التاريخ كما يلي:

import java.util.Date;
class Date_Ex1 {
 public static void main(String args[]) {
  // Instantiate a Date object by invoking its constructor
  Date objDate = new Date();
  // Display the Date & Time using toString()
  System.out.println(objDate.toString());
 }
}

الإخراج:

Wed Nov 29 06:36:22 UTC 2017

في المثال أعلاه، يظهر التاريخ بالتنسيق الافتراضي، إذا أردنا إظهار التاريخ والوقت بتنسيق آخر، ففهم أولاً تنسيق التاريخ.

SimpleDateFormat: تحليل التواريخ وتنسيقها

لا بد أنكم جميعاً تعلمتم الحروف الهجائية في روضة الأطفال الخاصة بكم....

دعونا الآن نتعلم ABC لتنسيق التاريخ.

OMG مكون التاريخ أو الوقت أمثلة
G مُحدّد العصر AD
y السنة 2018
M الشهر في السنة يوليو أو يوليو أو 07
w أسبوع في السنة 27
W أسبوع في الشهر 2
D اليوم في السنة 189
d اليوم في الشهر 10
F يوم من الأسبوع في الشهر 2
E اسم اليوم في الأسبوع الثلاثاء أو الثلاثاء
u رقم يوم الأسبوع (1 = الاثنين، ...، 7 = الأحد) 1
a علامة صباح / مساءً PM
H ساعة في اليوم (0-23) 0
k ساعة في اليوم (1-24) 24
K الساعة في صباحًا / مساءً (0-11) 0
h الساعة في صباحًا / مساءً (1-12) 12
m دقيقة بالساعة 30
s الثانية في دقيقة 55
S ميلي ثانية واحدة 978
z منطقة زمنية الوقت الباسيفيكي القياسي؛ PST؛ GMT-08: 00
Z منطقة زمنية -0800
X منطقة زمنية -08 أو -0800 أو -08:00

لا تقلق، لست بحاجة إلى تذكر كل هذه الأمور، حيث يمكن الرجوع إليها في أي وقت تحتاج فيه إلى تنسيق تاريخ معين.

كيفية استخدام SimpleDateFormat؟

توفر Java فئة تسمى SimpleDateFormat والتي تسمح لك بتنسيق التواريخ وتحليلها وفقًا لمتطلباتك.

يمكنك استخدام الأحرف المذكورة أعلاه لتحديد التنسيق-

فمثلا:

1) تنسيق التاريخ المطلوب: 2012.10.23 20:20:45 بتوقيت المحيط الهادئ

سيكون تنسيق التاريخ المناسب المحدد هو- yyyy.MM.dd HH:mm:ss zzz

2) تنسيق التاريخ المطلوب:09:30:00 AM 23-May-2012

سيكون تنسيق التاريخ المناسب المحدد هو-hh:mm:ss يوم-ط-ط-س س س س

تلميح: كن حذرا مع الحروف الكبيرة. إذا أخطأت بين M وm، فستحصل على نتائج غير مرغوب فيها!

دعونا نتعلم هذا مع مثال التعليمات البرمجية.

import java.text.SimpleDateFormat;
import java.util.Date;
class TestDates_Format {
 public static void main(String args[]) {
  Date objDate = new Date(); // Current System Date and time is assigned to objDate
  System.out.println(objDate);
  String strDateFormat = "hh:mm:ss a dd-MMM-yyyy"; //Date format is Specified
  SimpleDateFormat objSDF = new SimpleDateFormat(strDateFormat); //Date format string is passed as an argument to the Date format object
  System.out.println(objSDF.format(objDate)); //Date formatting is applied to the current date
 }
}

الإخراج:

Wed Nov 29 06:31:41 UTC 2017
06:31:41 AM 29-Nov-2017

مقارنة التواريخ مثال

مقارنة التواريخ مثال

الطريقة الأكثر فائدة لمقارنة التواريخ هي استخدام الطريقة – CompareTo()

دعونا نلقي نظرة على مقتطف الكود أدناه-

import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.Date;

class TestDates_Compare {
 public static void main(String args[]) throws ParseException {

  SimpleDateFormat objSDF = new SimpleDateFormat("dd-mm-yyyy");
  Date dt_1 = objSDF.parse("20-08-1981");
  Date dt_2 = objSDF.parse("12-10-2012");

  System.out.println("Date1 : " + objSDF.format(dt_1));
  System.out.println("Date2 : " + objSDF.format(dt_2));

  if (dt_1.compareTo(dt_2) > 0) {
   System.out.println("Date 1 occurs after Date 2");
  } // compareTo method returns the value greater than 0 if this Date is after the Date argument.
  else if (dt_1.compareTo(dt_2) < 0) {
   System.out.println("Date 1 occurs before Date 2");
  } // compareTo method returns the value less than 0 if this Date is before the Date argument;
  else if (dt_1.compareTo(dt_2) == 0) {
   System.out.println("Both are same dates");
  } // compareTo method returns the value 0 if the argument Date is equal to the second Date;
  else {
   System.out.println("You seem to be a time traveller !!");
  }
 }
}

الإخراج:

Date1 : 20-08-1981
Date2 : 12-10-2012
Date 1 occurs before Date 2