oruji.github.io
oruji.github.ioPersian Tutorials
ویرایش: 1396/11/13 16:40
A A

تبدیل رشته (String) به تاریخ (Date) در جاوا

در این آموزش، نحوه ی تبدیل رشته (String) به java.util.Date را نشان خواهیم داد. بسیاری از افرادی که تازه شروع به یادگیری جاوا می کنند، در تبدیل تاریخ به مشکل بر می خورند، امیدواریم این آموزش کمکی برای این افراد باشد.

// String -> Date SimpleDateFormat.parse(String); // Date -> String SimpleDateFormat.format(date);

در جدول زیر برخی از الگوهای تاریخ و زمان استفاده شده در java.text.SimpleDateFormat نشان داده شده است:

حرفتوضیحمثال
yسال2013
Mماه در سالJuly, 07, 7
dروز در ماه1-31
Eنام روز در هفتهFriday, Sunday
aعلامت پیش و بعد از ظهرAM, PM
Hساعت در روز0-23
hساعت در AM/PM1-12
mدقیقه در ساعت0-60
sثانیه در دقیقه0-60

رشته: 7-Jun-2013

در صورت بکار بردن 3 حرف 'M'، ماه به صورت (Mon-Dec) تفسیر می شود، در غیر اینصورت به شکل عدد (01-12) خواهد بود.

package org.amoozesh.date; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class TestDateExample1 { public static void main(String[] argv) { SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy"); String dateInString = "7-Jun-2013"; try { Date date = formatter.parse(dateInString); System.out.println(date); System.out.println(formatter.format(date)); } catch (ParseException e) { e.printStackTrace(); } } }

خروجی:

Fri Jun 07 00:00:00 MYT 2013 07-Jun-2013

رشته: 07/06/2013

package org.amoozesh.date; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class TestDateExample2 { public static void main(String[] argv) { SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); String dateInString = "07/06/2013"; try { Date date = formatter.parse(dateInString); System.out.println(date); System.out.println(formatter.format(date)); } catch (ParseException e) { e.printStackTrace(); } } }

خروجی

Fri Jun 07 00:00:00 MYT 2013 07/06/2013

رشته: Fri, June 7 2013

package org.amoozesh.date; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class TestDateExample3 { public static void main(String[] argv) { SimpleDateFormat formatter = new SimpleDateFormat("E, MMM dd yyyy"); String dateInString = "Fri, June 7 2013"; try { Date date = formatter.parse(dateInString); System.out.println(date); System.out.println(formatter.format(date)); } catch (ParseException e) { e.printStackTrace(); } } }

خروجی

Fri Jun 07 00:00:00 MYT 2013 Fri, Jun 07 2013

رشته: Friday, Jun 7, 2013 12:10:56 PM

package org.amoozesh.date; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class TestDateExample4 { public static void main(String[] argv) { SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMM dd, yyyy HH:mm:ss a"); String dateInString = "Friday, Jun 7, 2013 12:10:56 PM"; try { Date date = formatter.parse(dateInString); System.out.println(date); System.out.println(formatter.format(date)); } catch (ParseException e) { e.printStackTrace(); } } }

رشته: 2014-10-05T15:23:01Z

پسوند Z به معنای UTC می باشد، java.utile.SimpleDateFormat آن را به درستی parse نمی کند، نیاز است که پسوند Z با ' 0000' جا به جا شود.

package org.amoozesh.date; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class TestDateExample5 { public static void main(String[] argv) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); String dateInString = "2014-10-05T15:23:01Z"; try { Date date = formatter.parse(dateInString.replaceAll("Z$", " 0000")); System.out.println(date); System.out.println("time zone : " TimeZone.getDefault().getID()); System.out.println(formatter.format(date)); } catch (ParseException e) { e.printStackTrace(); } } }

خروجی:

Sun Oct 05 23:23:01 MYT 2014 time zone : Asia/Kuala_Lumpur 2014-10-05T23:23:01 0800

در جاوا نسخه 8، می توانید آن را به شیء java.time.Instance تبدیل کرده، و آن را با یک time zome مشخص نمایش دهید.

package org.amoozesh.date; import java.time.*; public class TestDateExample6 { public static void main(String[] argv) { String dateInString = "2014-10-05T15:23:01Z"; Instant instant = Instant.parse(dateInString); System.out.println(instant); //get date time only LocalDateTime result = LocalDateTime.ofInstant(instant, ZoneId.of(ZoneOffset.UTC.getId())); System.out.println(result); //get date time timezone ZonedDateTime zonedDateTime = instant.atZone(ZoneId.of("Africa/Tripoli")); System.out.println(zonedDateTime); //get date time timezone ZonedDateTime zonedDateTime2 = instant.atZone(ZoneId.of("Europe/Athens")); System.out.println(zonedDateTime2); } }

خروجی:

2014-10-05T15:23:01Z 2014-10-05T15:23:01 2014-10-05T17:23:01 02:00[Africa/Tripoli] 2014-10-05T18:23:01 03:00[Europe/Athens]

منابع

  1. SimpleDateFormat JavaDoc
  2. Joda Time