Как преобразовать date в string и снова в date?

Привет я хочу, чтобы преобразовать текущую дату в формате YYYY-MM-DD. Однако он преобразует дату в String формат, но я хочу преобразовать его обратно в . Может кто-нибудь посоветовать?

Это мой код до сих пор

 DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
 Date date = new Date();
 String datestring = dateFormat.format(date); 

6 ответов


попробуйте это:

 String DATE_FORMAT_NOW = "yyyy-MM-dd";
 Date date = new Date();
 SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
 String stringDate = sdf.format(date );
    try {
        Date date2 = sdf.parse(stringDate);
    } catch(ParseException e){
     //Exception handling
    } catch(Exception e){
     //handle exception
    }

использовать DateFormat#parse(String):

Date date = dateFormat.parse("2013-10-22");

попробовать эту функцию

public static Date StringToDate(String strDate) throws ModuleException {
    Date dtReturn = null;
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd");
    try {
        dtReturn = simpleDateFormat.parse(strDate);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return dtReturn;
}

преобразовать дату в строку с помощью этой функции

public String convertDateToString(Date date, String format) {
        String dateStr = null;
        DateFormat df = new SimpleDateFormat(format);
        try {
            dateStr = df.format(date);
        } catch (Exception ex) {
            System.out.println(ex);
        }
        return dateStr;
    }

С преобразовать дату в строку в Java . И преобразовать строку в дату снова

public Date convertStringToDate(String dateStr, String format) {
        Date date = null;
        DateFormat df = new SimpleDateFormat(format);
        try {
            date = df.parse(dateStr);
        } catch (Exception ex) {
            System.out.println(ex);
        }
        return date;
    }

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


для преобразования даты в строку проверьте этот поток

конвертировать java.утиль.Дата для строки

и для преобразования строки на сегодняшний день попробуйте это,

import java.text.ParseException;
import java.text.SimpleDateFormat;

public class StringToDate
{
    public static void main(String[] args) throws ParseException
    {
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
        String strDate = "14/03/2003 08:05:10";     
        System.out.println("Date - " + sdf.parse(strDate));
    }
}

tl; dr

как преобразовать дату в строку и на сегодняшний день снова?

LocalDate.now().toString()

2017-01-23

...и...

LocalDate.parse( "2017-01-23" )

java.время

в вопросе используются хлопотные старые классы даты и времени в комплекте с самыми ранними версиями Java. Эти классы теперь являются наследием, вытесненным java.классы времени, встроенные в Java 8, Java 9 и более поздние версии.

определение сегодняшней даты требуется часовой пояс. Для любого данного момента дата варьируется по всему миру по зонам.

если не предоставлено вами, применяется текущий часовой пояс JVM по умолчанию. Это значение по умолчанию может измениться в любой момент во время выполнения, и поэтому ненадежно. Я предлагаю вам всегда указывать желаемый / ожидаемый часовой пояс.

ZoneId z = ZoneId.of( "America/Montreal" ) ;
LocalDate ld = LocalDate.now( z ) ;

ISO 8601

ваш пожеланный формат гггг-ММ-ДД случается исполнить с стандартом ИСО 8601.

этот стандарт случается с по умолчанию используется java.классы времени при разборе / генерации строк. Поэтому вы можете просто позвонить LocalDate::parse и LocalDate::toString без указания шаблона форматирования.

String s = ld.toString() ;

для разбора:

LocalDate ld = LocalDate.parse( s ) ;

о java.время

на java.время framework встроен в Java 8 и более поздние версии. Эти классы вытесняют беспокойных старых наследие классы даты и времени, такие как java.util.Date, Calendar, & SimpleDateFormat.

на Joda Времени, теперь режим обслуживания, советует миграцию в java.время классы.

чтобы узнать больше, см. В Oracle Учебник. И search Stack Overflow для многих примеров и объяснений. Спецификация JSR 310.

где получить java.время занятий?

  • Java SE 8, Java SE 9, и позже
    • встроенный.
    • часть стандартного API Java со встроенной реализацией.
    • Java 9 добавляет некоторые незначительные функции и исправления.
  • Java SE 6 и Java SE 7
    • большая часть java.функциональность времени обратно портирован на Java 6 & 7 в ThreeTen-Backport.
  • Android

на ThreeTen-Extra проект расширяет java.время с дополнительными занятиями. Этот проект является испытательной площадкой для возможных будущих дополнений к java.время. Здесь вы можете найти полезные классы, такие как Interval, YearWeek, YearQuarter и больше.