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

معالجة التواريخ في JSP

أحد أكبر المزايا لاستخدام JSP هو أنه يمكنك استخدام جميع مكتبات Java API. سنتحدث في هذا الفصل بشكل مفصل عن فئة Date في Java، التي توجد في حزمة java.util وتقوم بغلاق التاريخ والوقت الحالي

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

Date( )

يقبل ثاني بناء كائن Date معطى، يمثل عدد الميليسي ثانية من منتصف الليل من 1 يناير 1970 حتى الوقت الذي يمثله هذا الكائن

Date(long millisec)

بعد الحصول على كائن Date، يمكنك استخدام جميع الطرق المدرجة في الجدول التالي:

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

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

استخدام برمجة JSP يمكن الحصول بسهولة على التاريخ والوقت الحالي، فقط باستخدام طريقة toString() من كائن Date، مثلما هو موضح أدناه:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%
<%@ page import="java.io.*,java.util.*, javax.servlet.*" %>
<html>
<head>
<title>显示当前时间与日期</title>
</head>
<body>
<h1>显示当前时间与日期</h1>
<%
   Date date = new Date();
   out.print("<h2 align="center">" + date.toString() + "</h2>");
%>
</body>
</html>

将上面的代码保存在 main.jsp 文件中,然后访问 http://localhost:8080/testjsp/main.jsp,运行结果如下:

عرض الوقت الحالي والتاريخ
Sat Jun 25 17:54:34 CST 2019

刷新 http://localhost:8080/testjsp/main.jsp,就可以发现每次刷新所得到的秒数都不相同。

日期比较

就像我在开头所提到的,您可以在JSP脚本中使用任何Java方法。如果您想要比较两个日期,

可以参照下面的方法来做:

  •             使用getTime()方法得到毫秒数,然后比较毫秒数就行了。

  •             使用before(),after(),equals()方法。比如,new Date(99,2,12).before(new Date(99,2,18))返回true。

  •             使用compareTo()方法,这个方法在Comparable接口中定义,在Date中实现。

    使用SimpleDateFormat格式化日期

SimpleDateFormat使用一种地区敏感的方式来格式化和解析日期,它允许您使用自定义的模式来格式化日期和时间。

对CurrentDate.jsp稍作修改,得到如下修改后的代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%
<%@ page import="java.io.*,java.util.*" %>
<%@ page import="javax.servlet.*,java.text.*" %>
<html>
<head>
<title>显示当前时间与日期</title>
</head>
<body>
<h1>显示当前时间与日期</h1>
<%
   Date dNow = new Date();
   SimpleDateFormat ft = 
   new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   out.print("<h2 align="center">" + ft.format(dNow) + "</h2>");
%>
</body>
</html>

أعد تجميع main.jsp ثم اذهب إلى http://localhost:8080/testjsp/main.jsp، للحصول على النتيجة التالية:

عرض الوقت الحالي والتاريخ
2019-06-25 17:57:53

رموز تنسيق SimpleDateFormat

لتحديد سلسلة النمط، يجب استخدام رموز التنسيق المذكورة في الجدول التالي:

حرفوصفمثال
                G                معلم زمني                AD
                y                سنة من أربعة أرقام                2001
                M                شهر                يوليو أو 07
                d                يوم                10
                h                نظام 12 ساعة، صباحًا/مساءً (1~12)                12
                H                نظام 24 ساعة                22
                m                دقيقة                30
                s                ثانية                55
                S                ملي ثانية                234
                E                يوم                Tuesday
                D                يوم معين في السنة                360
                F                يوم معين في الأسبوع                2 (الثلاثاء الثاني في يوليو)
                w                يوم معين في السنة                40
                W                يوم معين في الشهر                1
                a                علامة صباحًا/مساءً                PM
                k                ساعة معينة في اليوم (1~24)                24
                K                ساعة معينة في اليوم،صباحًا/مساءً (0~11)                10
                z                المنطقة الزمنية                Eastern Standard Time
                                فصل النص                مفصل
                علامة الترقيم                أقواس مزدوجة               

المزيد من التفاصيل حول كلاس Date راجع وثائق API لـ Java.