2015-06-04 8 views
1

У меня есть java.time.LocalDate Object в формате yyyy-MM-dd. Я хотел бы знать, как преобразовать это в java.util.Date с форматом MM-dd-yyyy. Метод getStartDate() должен иметь возможность возвращать объект типа даты в формате MM-dd-yyyy.Преобразование java.time.LocalDate в java.util.Date

DateParser класс

package com.accenture.javadojo.orgchart; 

import java.time.LocalDate; 
import java.time.format.DateTimeFormatter; 
import java.time.format.DateTimeParseException; 
import java.util.Locale; 


    public class DateParser { 

     public static LocalDate parseDate(String strDate){ 

      try{ 
       if((strDate != null) && !("").equals(strDate)){ 

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("M/d/yyyy").withLocale(Locale.US); 
        LocalDate date = LocalDate.parse(strDate, formatter); 
        return date; 
       } 
      } catch (DateTimeParseException e) { 

       e.printStackTrace(); 
      } 

      return null; 
     } 

    } 

public Date getStartDate() { 

    String fmd = format.format(startDate); 

    LocalDate localDate = DateParser.parseDate(fmd); 

    return startDate; 
} 
+0

«Дата» не имеет формата. –

+0

@SotiriosDelimanolis Я тебя не понял. Не могли бы вы объяснить немного больше, пожалуйста. – amal

+1

Вы говорите _return Тип типа даты с форматом MM-dd-yyyy_. Объект 'Date' - это только метка времени. У него нет формата. Если вы хотите формат, используйте 'SimpleDateFormat' и' format' 'Date'. –

ответ

0

Вы можете использовать SimpleDateFormat для переключения между LocalDate и даты объектов.

import java.text.SimpleDateFormat; 

public Date getStartDate() { 

     String fmd = format.format(startDate); 

     LocalDate localDate = DateParser.parseDate(fmd); 

     SimpleDateFormat actual = new SimpleDateFormat("yyyy-MM-dd"); 
     SimpleDateFormat wanted = new SimpleDateFormat("MM-dd-yyyy"); 

     String reformatted = wanted.format(actual.parse(localDate.toString())); 
     Date date = wanted.parse(reformatted); 
     return date; 
    } 
+0

Благодарим за отзыв. Но это не сработало. Я напечатал localDate, и это было: 1907-01-01. Затем я напечатал «дату», и это было примерно так: Вт янв 01 00:00:00 EST 1907 – amal

+0

Причина для downvote? Дата - это объект, упомянутый в комментарии @SotiriosDelimanolis в комментарии выше! Если вам нужно отобразить его как форматированную строку с форматом MM-dd-yyy, то в том месте, где вы делаете вызов метода getStartDate(), используйте что-то вроде 'SimpleDateFormat wanted = new SimpleDateFormat (« MM-dd-yyyy »); wanted.format (Date.toString()); ' – prem89

2

Если у вас есть LocalDate, который вы хотите преобразовать в Date, используйте

LocalDate localDate = ...; 
Instant instant = localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant(); 
Date res = Date.from(instant); 

Источник: http://blog.progs.be/542/date-to-java-time

Вы можете использовать SimpleDateFormat для форматирования Date в любой формат, который вам нравится.

Смежные вопросы