2013-03-07 6 views
1

Есть ли способ конвертировать переменную Time и Date в DateTime?Joda: Преобразование даты и времени в DateTime

У меня есть период между двумя переменными DateTime, для каждой даты в этот период я ​​хочу сохранить период IN в этой дате с началом DateTime и завершением DateTime, поэтому день может иметь несколько периодов, определяемых DateTime.

Невозможно понять, как сочетать дату и время с DateTime.

Заранее благодарен!

+1

Что именно * вы подразумеваете под «переменной времени и даты»? Было бы намного проще, если бы вы показали нам код, а не описывали его. –

+0

java.sql.Time beginTime и java.sql.Date beginDate, я хочу сформировать DateTime из них – Luc

+0

Люк - дайте нам пример того, что вы хотите сделать. делает вещи более ясными. –

ответ

2

Fixed его с помощью этого:

public DateTime dateAndTimeToDateTime(java.sql.Date date, java.sql.Time time) { 
    String myDate = date + " " + time; 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    java.util.Date utilDate = new java.util.Date(); 
    try { 
     utilDate = sdf.parse(myDate); 
    } catch (ParseException pe){ 
     pe.printStackTrace(); 
    } 
    DateTime dateTime = new DateTime(utilDate); 

    return dateTime; 
} 
3

Простой java Date и Joda-TimeDateTime должен служить цели.

Date date = new Date(); // java.util.Date; - This date has both the date and time in it already. 
DateTime dateTime = new DateTime(date); 

Подробнее info о Joda-Time.

Если у вас есть два String объекты, где 1 крепят Date и другие Time, вы можете объединить 2 строк и использовать SDF, чтобы разобрать его и получить Date объект, который затем можно преобразовать в DateTime.

+1

Относительно этого последнего абзаца ... Если вы включают «T» между этой датой и временем ([стандартный формат] (https://en.wikipedia.org/wiki/ISO_8601)), вы можете передать строку непосредственно конструктору [DateTime] (http: // www.joda.org/joda-time/apidocs/org/joda/time/DateTime.html). Не нужно использовать классы SimpleDateFormat & Date. Только одна строка кода. Подобно этому ... 'DateTime dateTime = new DateTime (" 2013-01-02T03: 04: 05 ", DateTimeZone.UTC);' –

2

Я уверен, что вы можете найти, как создавать экземпляры даты и времени отдельно.

Однако в самом объекте datetime вы можете указать следующее.

dateTimeObject = dateTimeObject.withHourOfDay(12); 
dateTimeObject = dateTimeObject.withMinuteofHour(59); 
dateTimeObject = dateTimeObject.withSecondOfMinute(59); 

Надеюсь, что это поможет!

2

Даже если этот вопрос немного старше и уже ответил, я не смог найти удовлетворительного решения. Лучшим методом для этой проблемы является, вероятно, следующий код (без необходимости обработки разбора и обработки исключений):

public DateTime dateAndTimeToDateTime(java.sql.Date date, java.sql.Time time) { 
    DateTime t = new DateTime(time); 
    return new DateTime(date).withTime(t.getHourOfDay(), t.getMinuteOfHour(), t.getSecondOfMinute(), t.getMillisOfSecond()); 
}