کار با تاریخ و زمان در جاوا

کار با تاریخ و زمان در جاوا
مرداد ۱۳, ۱۳۹۸ No Comments javascript زهرا ابراهیمی

جاوا کلاس تاریخ را در پکیج  java.util فراهم می کند، این کلاس تاریخ و زمان فعلی را محاسبه می کند.

مطابق جدول زیر کلاس تاریخ دو سازنده را پشتیبانی می کند. به توضیحات جدول توجه فرمائید.

 

ردیفسازنده و توضیحات
۱Date( )

این سازنده موضوع را با تاریخ و زمان فعلی راه اندازی می کند.

۲Date(long millisec)

این سازنده یک استدلال را پذیرفته است که آرگومان برابر با تعداد میلی ثانیه از نیمه شب ۱ ژانویه ۱۹۷۰ سپری شده است.

در ادامه روش های مربوط به کلاس تاریخ ارائه می گردد.

متدهای کلاس تاریخ

ردیفروش و توضیحات
۱boolean after(Date date)

اگر موضوع تاریخ درخواست شده یک تاریخ بعد از تاریخ مشخص شده را شامل شود، درست است و در غیر اینصورت، بازگشتی اشتباه است.

۲boolean before(Date date)

اگر موضوع تاریخ درخواست شده یک تاریخ قبل از تاریخ مشخص شده را شامل شود، درست است و در غیر اینصورت، بازگشتی اشتباه است

۳Object clone( )

موضوع تاریخ درخواست شده تکرار می شود.

۴int compareTo(Date date)

مقدار موضوع درخواست شده را با تاریخ مقایسه می کند. اگر مقادیر برابر باشند، جواب ۰ را است . اگر موضوع درخواست شده از تاریخ باشد مقدار منفی را برمی گرداند. و این مقدار مثبت است، اگر موضوع درخواست شده بعد از تاریخ باشد..

۵int compareTo(Object obj)

اگر obj از کلاس تاریخ عینا با تاریخ مقایسه شود. در غیر اینصورت نتیجه به ClassCastException فرستاده می شود.

۶boolean equals(Object date)

اگر موضوع تاریخ درخواست شده حاوی همان زمان و تاریخ مشخص شده باشد، نتیجه درست و در غیر اینصورت، نادرست را باز می گرداند.

۷long getTime( )

تعداد از میلی ثانیه که از اول ژانویه ۱۹۷۰ سپری شده است را برمی گرداند.

۸int hashCode( )

یک کد هش برای موضوع درخواست شده را بازمی گرداند.

۹void setTime(long time)

زمان و تاریخ را به عنوان زمان مشخص شده تعیین می کند، که نشان دهنده زمان سپری شده در واحد میلی ثانیه از نیمه شب، ۱ ژانویه ۱۹۷۰ است.

۱۰String toString( )

موضوع تاریخ درخواست شده را به یک رشته تبدیل می کند و نتیجه را تولید می کند.

 

گرفتن تاریخ و زمان فعلی

این روش برای دریافت تاریخ و زمان فعلی در جاوا بسیار آسان است. شما می توانید از یک موضوع تاریخ ساده با روش toString () برای چاپ تاریخ و زمان فعلی به صورت زیر استفاده کنید .

مثال

import java.util.Date;

public class DateDemo {

public static void main(String args[]) {

// Instantiate a Date object

Date date = new Date();

// display time and date using toString()

System.out.println(date.toString());

}

}

نتیجه به صورت زیر خواهد بود

خروجی

on May 04 09:51:52 CDT 2009

مقایسه تاریخ

در ادامه سه روش برای مقایسه دو تاریخ ارائه شده است

  • شما می توانید از()getTime برای به دست آوردن تعداد میلی ثانیه سپری شده از نیمه شب، ژانویه ۱، ۱۹۷۰، استفاده کنید، و سپس این دو ارزش را مقایسه کنید.
  • شما می توانید از روش before()، after() و equals() استفاده کنید. به عنوان مثال، چون دوازدهم ماه قبل از هجدهم می آیدتاریخ جدید (۱۲/۲/۹۹). قبل از (تاریخ جدید (۱۸/۲/۹۹)) درست است.
  • شما می توانید از روش() compareTo استفاده کنید که توسط رابط قابل مقایسه و توسط تاریخ تعریف شده مشخص مس شود.

قالب بندی تاریخ با استفاده از SimpleDateFormat

SimpleDateFormat یک کلاس کلی برای قالب بندی و تاریخ تجزیه و تحلیل در یک شیوه حساس به زبان است. SimpleDateFormat به شما اجازه می دهد با انتخاب هر گونه الگوهای تعریف شده توسط کاربر برای قالب بندی تاریخ زمان شروع کنید.

مثال

import java.util.*;

import java.text.*;

public class DateDemo {

public static void main(String args[]) {

Date dNow = new Date( );

SimpleDateFormat ft =

new SimpleDateFormat (“E yyyy.MM.dd ‘at’ hh:mm:ss a zzz”);

System.out.println(“Current Date: ” + ft.format(dNow));

}

}

در نهایت خروجی برنامه به ترتیب زیر خواهد بود

خروجی

Current Date: Sun 2004.07.18 at 04:14:09 PM PDT

کدهای قالب simple DateFormat

برای تعیین فرمت زمان، از یک رشته الگوی زمان استفاده میشود. در این الگوی، تمام حروف ASCII به عنوان حروف الفبا محفوظ می مانند که به شرح زیر تعریف می شوند:

کاراکترتوضیحاتمثال
Gشناسه دوران و عهدAD
yسال در چهار رقم۲۰۰۱
Mماه در سالJuly or 07
dروز در ماه۱۰
hزمان در قالب  A.M./P.M. (1~12)۱۲
Hزمان در روز (۰~۲۳)۲۲
mدقیقه در زمان۳۰
sثانیه در دقیقه۵۵
Sمیلی ثانیه۲۳۴
Eروز در هفتهTuesday
Dروز در سال۳۶۰
Fروز هفته در سال۲ (second Wed. in July)
wهفته در سال۴۰
Wهفته در ماه۱
aنشانگر A.M./P.M.PM
kزمان در روز  (۱~۲۴)۲۴
Kزمان در  A.M./P.M. (0~11)۱۰
zمحدوده زمانیEastern Standard Time
خروج از متنDelimiter
نقل قول`

 

قالب بندی تاریخ با استفاده از printf

فرمت تاریخ و زمان را می توان به راحتی با استفاده از روش printf انجام داد. شما از فرمت دو حرف استفاده می کنید، در ابتدا از حرف t و حرف دوم یکی از حروف جدول بالا، همانطور که در کد زیر نشان داده شده است.

مثال

import java.util.Date;

public class DateDemo {

public static void main(String args[]) {

// Instantiate a Date object

Date date = new Date();

// display time and date

String str = String.format(“Current Date/Time : %tc”, date );

System.out.printf(str);

}

}

نتیجه به صورت زیر خواهد بود

خروجی

Current Date/Time : Sat Dec 15 16:37:57 MST 2012

اگر شما مجبور باشید چندین مرتبه تاریخ را برای فرمت هر قسمت بخوانید، کمی اشتباه و بیهوده به نظر می رسد. به همین دلیل، یک رشته قالب می تواند نشانگر عنوان قالب باشد.

نشانگر باید بلافاصله از٪ بیاید و باید با یک علامت $ خاتمه یابد.

مثال

import java.util.Date;

public class DateDemo {

public static void main(String args[]) {

// Instantiate a Date object

Date date = new Date();

// display time and date

System.out.printf(“%1$s %2$tB %2$td, %2$tY”, “Due date:”, date);

}

}

نتیجه به صورت زیر است

خروجی

Due date: February 09, 2004

همچنین می توانید از flag> استفاده کنید. این همان آرگومان قالب قبلی را نشان می دهد که بایددوباره استفاده شود.

مثال

import java.util.Date;

public class DateDemo {

public static void main(String args[]) {

// Instantiate a Date object

Date date = new Date();

// display formatted date

System.out.printf(“%s %tB %<te, %<tY”, “Due date:”, date);

}

}

نتیجه به صورت زیر است

خروجی

Due date: February 09, 2004

کاراکترهای تبدیل زمان و تاریخ

کاراکترتوضیحاتمثال
cزمان و تاریخ کاملMon May 04 09:51:52 CDT 2009
Fتاریخ ISO 8601۲۰۰۴-۰۲-۰۹
D (month/day/year) قالب تاریخ U.S.۰۲/۰۹/۲۰۰۴
Tزمان ۲۴- زمانه۱۸:۰۵:۱۹
rزمان ۱۲- زمانه۰۶:۰۵:۱۹ pm
Rزمان ۲۴- زمانه بدون ثانیه۱۸:۰۵
Yسال چهار رقمی (با صفر پیشین)۲۰۰۴
yدو رقم آخر سال (با صفر پیشین)۰۴
Cدو رقم اول سال (با صفر پیشین)۲۰
Bنام ماه کاملFebruary
bنام اختصاری ماهFeb
mماه دو رقمی (با صفر پیشین)۰۲
dروز دو رقمی (با صفر پیشین)۰۳
eروز دو رقمی (بدون صفر )۹
Aنام روز هفته کاملMonday
aنام اختصاری روز هفتهMon
jروز سه رقمی سال (با صفر پیشین)۰۶۹
Hزمان دو رقمی (با صفر پیشین)، بین ۰۰ و ۲۳۱۸
kزمان دو رقمی (بدون صفر پیشین)، بین ۰ و ۲۳۱۸
Iزمان دو رقمی (با صفر پیشین)، بین ۰۱ و ۱۲۰۶
lزمان دو رقمی (بدون صفر پیشین)، بین ۱ تا ۱۲۶
Mدقیقه دو رقمی (با صفر پیشین)۰۵
Sثانیه دو رقمی (با صفر پیشین)۱۹
Lمیلی ثانیه سه رقمی (با صفر پیشین)۰۴۷
Nنانو ثانیه نه رقمی (با صفر پیشین)۰۴۷۰۰۰۰۰۰
Pنشانگر با حروف بزرگ صبحگاهی یا بعد از ظهرPM
pنشانگر با حروف کوچک صبحگاهی یا بعد از ظهرpm
zRFC 822 افست عددی از GMT-۰۸۰۰
Zمحدوده زمانیPST
sثانیه از ۱۹۷۰-۰۱-۰۱ ۰۰:۰۰:۰۰ GMT۱۰۷۸۸۸۴۳۱۹
Qمیلی ثانیه از تاریخ ۱۹۷۰-۰۱-۰۱ ۰۰:۰۰:۰۰ GMT۱۰۷۸۸۸۴۳۱۹۰۴۷

 

کلاس های مفید دیگر مربوط به تاریخ و زمان وجود دارد. برای جزئیات بیشتر، می توانید به اسناد استاندارد جاوا مراجعه کنید.

تجزیه رشته ها به تاریخ

کلاس SimpleDateFormat دارای برخی از روش های اضافی، به ویژه() parse است، که تلاش می کند یک رشته ذخیره شده در موضوع SimpleDateFormat را بر اساس قالب تجزیه کند.

مثال

import java.util.*;

import java.text.*;

public class DateDemo {

public static void main(String args[]) {

SimpleDateFormat ft = new SimpleDateFormat (“yyyy-MM-dd”);

String input = args.length == 0 ? “1818-11-11” : args[0];

System.out.print(input + ” Parses as “);

Date t;

try {

t = ft.parse(input);

System.out.println(t);

} catch (ParseException e) {

System.out.println(“Unparseable using ” + ft);

}

}

}

اجرای نمونه ای از برنامه فوق نتایج زیر را تولید می کند:

خروجی

۱۸۱۸-۱۱-۱۱ Parses as Wed Nov 11 00:00:00 EST 1818

در حالی که خواب است

شما می توانید برای هر دوره زمانی از یک میلی ثانیه تا عمر کامپیوتر خود بخوابید. به عنوان مثال، برنامه زیر برای یک خواب ۳ ثانیه ای است

مثال

import java.util.*;

public class SleepDemo {

public static void main(String args[]) {

try {

System.out.println(new Date( ) + “\n”);

Thread.sleep(5*60*10);

System.out.println(new Date( ) + “\n”);

} catch (Exception e) {

System.out.println(“Got an exception!”);

}

}

}

نتیجه به صورت زیر است

خروجی

Sun May 03 18:04:41 GMT 2009

Sun May 03 18:04:51 GMT 2009

اندازه گیری گذشت زمان

گاهی اوقات ممکن است نیاز به اندازه گیری  زمان در واحد میلی ثانیه باشد. بنابراین بار دیگر مثال فوق را برای این منظور بازنویسی می کنیم

مثال

import java.util.*;

public class DiffDemo {

public static void main(String args[]) {

try {

long start = System.currentTimeMillis( );

System.out.println(new Date( ) + “\n”);

Thread.sleep(5*60*10);

System.out.println(new Date( ) + “\n”);

long end = System.currentTimeMillis( );

long diff = end – start;

System.out.println(“Difference is : ” + diff);

} catch (Exception e) {

System.out.println(“Got an exception!”);

}

}

}

نتیجه به صورت زیر است

خروجی

Sun May 03 18:16:51 GMT 2009

Sun May 03 18:16:57 GMT 2009

Difference is : 5993

کلاس GregorianCalendar

GregorianCalendar اجرای بنیادی یک کلاس تقویم است که تقویم عادی گریگوری را اجرا می کند که با آن آشنا هستید. ما کلاس تقویم را در این مطلب آموزش دادیم ، شما می توانید برای آشنایی با جزئیات بیشتر به اسناد استاندارد جاوا مراجعه فرمائید.

روش  getInstance ()تقویم، GregorianCalendar را با تاریخ و زمان فعلی در منطقه پیش فرض محلی و منطقه ای تنظیم می کند. GregorianCalendar دو زمینه را مشخص می کند: AD و BC. این ها نشان دهنده دو دوره است که توسط تقویم گرگوری تعریف شده اند.

همچنین سازندگان متعددی برای موضوعات GregorianCalendar وجود دارد در جدول زیر به بررسی آنها می پردازیم

ردیفسازمده و توضیحات
۱GregorianCalendar()

GregorianCalendar پیش فرضی را با استفاده از زمان فعلی در محدوده زمانی پیش فرض با محلی پیش فرض ایجاد می کند.

۲GregorianCalendar(int year, int month, int date)

ایجاد یک GregorianCalendar با تاریخ تنظیم شده داده شده در محدوده زمانی پیش فرض و محلی پیش فرض است.

۳GregorianCalendar(int year, int month, int date, int hour, int minute)

یک GregorianCalendar با تاریخ و زمان مشخص شده برای محدوده زمانی پیش فرض با محلی پیش فرض ایجاد می کند.

۴GregorianCalendar(int year, int month, int date, int hour, int minute, int second)

یک GregorianCalendar با تاریخ و زمان مشخص شده برای منطقه زمانی پیش فرض با محلی پیشفرض ایجاد می کند.

۵GregorianCalendar(Locale aLocale)

یک GregorianCalendar را بر اساس زمان فعلی در محدوده زمانی پیش فرض با محل داده شده ایجاد می کند.

۶GregorianCalendar(TimeZone zone)

یک GregorianCalendar را بر اساس زمان فعلی در محدوده زمانی داده شده با محلی پیش فرض ایجاد می کند.

۷GregorianCalendar(TimeZone zone, Locale aLocale)

یک GregorianCalendar را بر اساس زمان فعلی در منطقه زمانی داده شده و محل داده شده ایجاد می کند.

در اینجا لیستی از چند روش پشتیبانی مفید ارائه شده توسط کلاس GregorianCalendar آورده شده است

متد های کلاس GregorianCalendar

ردیفروش و توضیحات
۱void add(int field, int amount)

مقدار مشخص شده (نشانه دار) را بر اساس قوانین تقویم.به زمینه زمان داده شده اضافه می کند،

۲protected void computeFields()

تبدیل UTC به صورت میلی ثانیه به مقادیر میدان زمان.

۳protected void computeTime()

لغو تبدیل مقادیر میدان زمان به UTC به صورت میلی ثانیه.

۴boolean equals(Object obj)

GregorianCalendar را با مرجع موضوع مقایسه می کند.

۵int get(int field)

مقدار یک زمینه زمانی می دهد

۶int getActualMaximum(int field)

حداکثر مقدار این زمینه را با توجه به تاریخ فعلی می دهد.

۷int getActualMinimum(int field)

حداقل مقدار این زمینه را با توجه به تاریخ فعلی می دهد.

۸int getGreatestMinimum(int field)

در صورت تغییر بالاترین مقدار حداقل برای زمینه را نشان می دهد.

۹Date getGregorianChange()

تاریخ تغییر تقویم گریگوری را می گیرد.

۱۰int getLeastMaximum(int field)

در صورت تغییر پائین ترین مقدار حداکثر برای زمینه را نشان می دهد.

۱۱int getMaximum(int field)

مقدار حداکثر برای زمینه داده شده را نشان می دهد.

۱۲Date getTime()

زمان فعلی این تقویم را می گیرد.

۱۳long getTimeInMillis()

زمان فعلی این تقویم به عنوان یک long می گیرد.

۱۴TimeZone getTimeZone()

محدوده زمانی را می گیرد.

۱۵int getMinimum(int field)

حداقل مقدار برای زمینه داده شده را برمی گرداند.

۱۶int hashCode()

هش کد را لغو می کند

۱۷boolean isLeapYear(int year)

تعیین می کند که آیا سال داده شده سال کبیسه است.

۱۸void roll(int field, boolean up)

اضافه کردن یا کم کردن (بالا / پایین) یک واحد در زمان به  زمان داده شده بدون اینکه در  زمینه های بزرگترتغییر ایجاد کند .

۱۹void set(int field, int value)

زمینه زمان را با مقدار داده شده تنظیم می کند.

۲۰void set(int year, int month, int date)

مقادیر برای زمینه سال، ماه و تاریخ را تنظیم می کند.

۲۱void set(int year, int month, int date, int hour, int minute)

مقادیر برای زمینه سال، ماه، تاریخ، زمان، دقیقه و ثانیه را تنظیم می کند.

۲۲void set(int year, int month, int date, int hour, int minute, int second)

مقادیر برای زمینه ها سال، ماه، تاریخ، زمان، دقیقه و ثانیه را تنظیم می کند.

۲۳void setGregorianChange(Date date)

تاریخ تغییر GregorianCalendar را تنظیم می کند.

۲۴void setTime(Date date)

تاریخ فعلی تقویم را با تاریخ داده شده تنظیم می کند.

۲۵void setTimeInMillis(long millis)

زمان فعلی تقویم را با مقدار long داده شده تنظیم می کند.

۲۶void setTimeZone(TimeZone value)

محدوده زمانی را با مقدار محدوده زمانی داده شده تنظیم می کند.

۲۷String toString()

نمایش رشته ای از این تقویم را بازمی گرداند.

 

 

مثال

import java.util.*;

public class GregorianCalendarDemo {

public static void main(String args[]) {

String months[] = {“Jan”, “Feb”, “Mar”, “Apr”, “May”, “Jun”, “Jul”, “Aug”, “Sep”,

“Oct”, “Nov”, “Dec”};

int year;

// Create a Gregorian calendar initialized

// with the current date and time in the

// default locale and timezone.

GregorianCalendar gcalendar = new GregorianCalendar();

// Display current time and date information.

System.out.print(“Date: “);

System.out.print(months[gcalendar.get(Calendar.MONTH)]);

System.out.print(” ” + gcalendar.get(Calendar.DATE) + ” “);

System.out.println(year = gcalendar.get(Calendar.YEAR));

System.out.print(“Time: “);

System.out.print(gcalendar.get(Calendar.HOUR) + “:”);

System.out.print(gcalendar.get(Calendar.MINUTE) + “:”);

System.out.println(gcalendar.get(Calendar.SECOND));

// Test if the current year is a leap year

if(gcalendar.isLeapYear(year)) {

System.out.println(“The current year is a leap year”);

}else {

System.out.println(“The current year is not a leap year”);

}

}

}

نتیجه به صورت زیر است

خروجی

Date: Apr 22 2009

Time: 11:25:27

سال جاری یک سال کبیسه نیست

برای دریافت لیست کاملی از ثابت موجود در کلاس تقویم میتوانید به مستندات استاندارد جاوا مراجعه کنید.

آنچه در آموزش بعدی خواهید خواند

در آموزش بعدی زبان برنامه‌نویسی جاوا عبارات منظم در جاوا را مورد بررسی قرارخواهیم داد با ما همراه باشید.

tutorialspoint

Tags
درباره نویسنده

Leave a reply

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *