Рубрики
Без рубрики

Как преобразовать строку в дату – Java

– Как преобразовать строку в дату – Java

В этом уроке мы покажем вам, как преобразовать строку в java.util. Дата . Многие новички Java застряли в преобразовании данных, надеюсь, это краткое руководство поможет вам в чем-то.

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

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

Некоторые общие шаблоны даты и времени, используемые в java.text, приведены в таблице ниже. SimpleDateFormat , обратитесь к этому javadoc

Письмо Описание Примеры
y Год 2013
M Месяц в году 07, 7 июля
d День в месяце 1-31
E Название дня в неделе Пятница, Воскресенье
a Маркер Am/pm УТРА, ВЕЧЕРА
H Час в день 0-23
h Час в am/pm 1-12
m Минута в час 0-60
s Секунда в минуте 0-60

УТРА, ВЕЧЕРА

Если 3 ‘M’, то месяц интерпретируется как текст (Пн-дек), другое число (01-12).

package com.mkyong.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

2./06/2013

package com.mkyong.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

3., 7 июня 2013 г.

package com.mkyong.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

4., 7 июня 2013 года 12:10:56 ВЕЧЕРА

package com.mkyong.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();
        }

    }

}

Выход

Fri Jun 07 12:10:56 MYT 2013
Friday, Jun 07, 2013 12:10:56 PM

5.-10-05T15:23:01Z

Суффикс Z означает UTC, java.util. SimpleDateFormat не анализирует его правильно, вам нужно заменить суффикс Z на ‘+0000’.

package com.mkyong.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

В Java 8 вы можете преобразовать его в java.time. Мгновенный объект и отобразите его с указанным часовым поясом.

package com.mkyong.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. Простой формат данных javadoc
  2. Java 8 – Как преобразовать строку в LocalDate
  3. Stackoverflow: упрощенный формат данных, анализирующий данные с помощью ‘Z “буквальный
  4. Википедия: ISO 8601
  5. Классы часового пояса и смещения
  6. GMT ПРОТИВ UTC
  7. Что такое Часовой пояс?
  8. Время Джоды

Оригинал: “https://mkyong.com/java/how-to-convert-string-to-date-java/”