English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

معالجة التواريخ Servlet

من بين أكبر المزايا التي يقدمها Servlet هو أنه يمكنك استخدام معظم الطرق المتاحة في Java الأساسي. java.util في المجموعة Date النوع، هذا النوع يحتوي على تاريخ الوقت الحالي.

يدعم جسم Date اثنين من مكونات البناء. المكون الأول يُقوم بتهيئة جسم التاريخ والوقت الحالي.

Date( )

تقبل المكونات الأساسية للبناء الخاص بهذه الفئة عددًا من الميليسيكونات التي مرت من منتصف الليل في 1 يناير 1970.

Date(long millisec)

بمجرد أن يكون لديك جسم Date متاح، يمكنك استدعاء أي من الطرق التالية لدعم التاريخ:

الترتيبالطريقة & الوصف
1boolean after(Date date)
إذا كان التاريخ الذي يحتويه جسم Date المطلوب استدعاؤه يلي التاريخ المحدد في date، فإنه يعود صحيحًا، وإلا يعود خطأً.
2boolean before(Date date)
إذا كان التاريخ الذي يحتويه جسم Date المطلوب استدعاؤه يسبق التاريخ المحدد في date، فإنه يعود صحيحًا، وإلا يعود خطأً.
3Object clone( )
تكرار استدعاء Object Date.
4int compareTo(Date date)
يقارن قيمة العنصر المطلوب مع قيمة date. إذا كانت القيمتان متساويتان، فإنه يعود إلى 0. إذا كان العنصر المطلوب قبل date، فإنه يعود إلى قيمة سلبية. وإذا كان العنصر المطلوب بعد date، فإنه يعود إلى قيمة إيجابية.
5int compareTo(Object obj)
إذا كان obj من فئة Date، فإن العملية تساوي compareTo(Date). وإلا، سيقوم بتقديم ClassCastException.
6boolean equals(Object date)
إذا كان الوقت والتاريخ في Object Date المطلوب يحتويان على نفس القيمة كـ date، فإنه يعود إلى true، وإلا يعود إلى false.
7long getTime( )
يعود إلى عدد الملي ثانية التي مضت من 1 يناير 1970.
8int hashCode( )
يعود للعنصر المطلوب إلى قيمة الهشاشة.
9void setTime(long time)
تعيين time الوقت والتاريخ المحدد، مما يمثل الوقت الذي مضى من منتصف الليل في 1 يناير 1970 (بالملي ثانية).
10String toString( )
تحويل Object Date المطلوب إلى نص، وعدد النتيجة.

الحصول على التاريخ والوقت الحالي

الحصول على التاريخ والوقت الحالي في Servlet Java سهل للغاية. يمكنك استخدام بسيط Object Date toString() إليك كيفية عرض التاريخ والوقت الحالي، باستخدام هذه الطريقة:

باكجيت com.w3codebox.test;
استيراد java.io.IOException;
استيراد java.io.PrintWriter;
استيراد java.util.Date;
استيراد javax.servlet.ServletException;
استيراد javax.servlet.annotation.WebServlet;
استيراد javax.servlet.http.HttpServlet;
استيراد javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * Servlet implementation class CurrentDate
 */
@WebServlet("/CurrentDate")
public class CurrentDate extends HttpServlet {
    private static final long serialVersionUID = 1L;
   
    public CurrentDate() {
        super();
    }
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
          String title = "عرض التاريخ والوقت الحالي";
        Date date = new Date();
        String docType = "<!DOCTYPE html> \n";
          out.println(docType +
            "<html>\n" +
            "<head><title>" + title + "</title></head>\n" +
            "<body bgcolor="#f0f0f0">\n" +
            "<h1 align="center">" + title + "</h1>\n" +
            "<h2 align="center">" + date.toString() + "</h2>\n" +
            "</body></html>);
    }
}

الآن، دعونا نبدأ في تجميع Servlet المذكور أعلاه، ونخلق المدخل المناسب في ملف web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
  <servlet>
    <servlet-name>CurrentDate</servlet-name>
    <servlet-class>com.w3codebox.test.CurrentDate</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>CurrentDate</servlet-name>
    <url-pattern>/TomcatTest/CurrentDate</url-pattern>
  </servlet-mapping>
</web-app>

ثم استدعاء Servlet عبر زيارة http://localhost:8080/TomcatTest/CurrentDate. سيؤدي ذلك إلى إنتاج النتيجة التالية:

حاول تحديث عنوان URL http://localhost:8080/TomcatTest/CurrentDate، وستجد كلما تم تحديثه كل بضع ثوانٍ أن هناك فرقًا في الوقت الظاهر.

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

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

  • يمكنك استخدام getTime() للحصول على الوقت الذي مر عليه من منتصف الليل من 1 يناير 1970 (بالملي ثانية) لكل من الاثنين، ثم مقارنة هذه القيم.

  • يمكنك استخدام الطرق before()، after() و equals(). نظرًا لأن 12 من الشهر يسبق 18، على سبيل المثال، يعود new Date(99, 2, 12).before(new Date (99, 2, 18)) إلى true.

  • يمكنك استخدام مكتبة compareTo()، التي تم تعريفها من قبل واجهة Comparable، والتحقق من قبل Date.

استخدام SimpleDateFormat لتنسيق التاريخ

SimpleDateFormat هي فئة معينة لتنسيق وتحليل التواريخ بشكل حساس تجاه بيئة اللغة. تسمح SimpleDateFormat باختيار أي نموذج تنسيق توقيت تريد أن تستخدمه.

لنعدل على المثال السابق كما يلي:

باكجيت com.w3codebox.test;
استيراد java.io.IOException;
استيراد java.io.PrintWriter;
استيراد java.text.SimpleDateFormat;
استيراد java.util.Date;
استيراد javax.servlet.ServletException;
استيراد javax.servlet.annotation.WebServlet;
استيراد javax.servlet.http.HttpServlet;
استيراد javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * Servlet implementation class CurrentDate
 */
@WebServlet("/CurrentDate")
public class CurrentDate extends HttpServlet {
    private static final long serialVersionUID = 1L;
   
    public CurrentDate() {
        super();
    }
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        
        PrintWriter out = response.getWriter();
        String title = "عرض التاريخ والوقت الحالي";
        Date dNow = new Date( );
        SimpleDateFormat ft = 
                new SimpleDateFormat("yyyy.MM.dd \t hh:mm:ss E a ");
        String docType = "<!DOCTYPE html> \n";
        out.println(docType +
            "<html>\n" +
            "<head><title>" + title + "</title></head>\n" +
            "<body bgcolor="#f0f0f0">\n" +
            "<h1 align="center">" + title + "</h1>\n" +
            "<h2 align="center">" + ft.format(dNow) + "</h2>\n" +
            "</body></html>);
    }
}

مرة أخرى، قم بتشغيل Servlet المذكور أعلاه، ثم قم بزيارة http://localhost:8080/TomcatTest/CurrentDate لتشغيل Servlet. سيتم إنتاج النتيجة التالية:

كود تنسيق تاريخ بسيط

استخدم سلسلة نمط الحدث لتعريف تنسيق الوقت. في هذا النمط، يتم الحفاظ على جميع الأحرف ASCII كأحرف النمط، والتي تعرف كما يلي:

حرفوصفمثال
Gمؤشر العصرAD
yالسنة المكونة من أربعة أرقام2001
Mالشهر في السنةيوليو أو 07
dاليوم في الشهر10
hالساعات مع A.M./P.M. (1~12)12
Hالساعة في اليوم (0~23)22
mالدقيقة في الساعة30
sالثانية في الدقيقة55
Sالمللي ثانية234
Eاليوم في الأسبوعالثلاثاء
Dاليوم في السنة360
Fالأسبوع الحالي هو الأسبوع الذي في الشهر2 (ثلاثاء الثاني في يوليو)
wالأسبوع في السنة40
Wالأسبوع في الشهر1
aعلامة A.M./P.M.P.M.
kالساعة في اليوم (1~24)24
Kالساعات مع A.M./P.M. (0~11)10
zالمنطقة الزمنيةالوقت القياسي الشرقية
'هروب النصمحدد
"النقطة السفلية`

للإطلاع على قائمة كاملة من طرق معالجة التواريخ المتاحة، يمكنك الرجوع إلى وثائق Java القياسية.