2010-03-22 1 views
3

Я использую данные Google api, которые дают дату в формате даты и времени. Я хочу преобразовать дату даты DateTime в гридский формат даты календаря. Кто-нибудь знает какие-либо методы для этого?Java - Преобразование даты и времени в gregorian calender time (date)

** Под редакцией вопрос *

ответ

2

Это class, безусловно, не лучшая работа компании Google (я ссылку на API, так что я могу подтвердить, мы говорим о том же классе и версии). Вот что я хотел бы сделать:

public class DateTimeConverter extends DateTime { 
     private DateTime originalTime; 

     public DateTimeConverter(DateTime originalTime) { 
       this.originalTime = originalTime; 
     } 

     public java.util.Date getDate() { 
       return new java.util.Date(this.value); 
     } 
    } 

Пример использования:

 DateTime originalTime; 
    //Populate variable and then: 
    java.util.Date myDate = new DateTimeConverter(originalTime).getDate(); 

Оттуда вы можете сделать календарь. Работа с тем, что делать, если DateTime представляет только дату и проблемы с часовым поясом, вы можете иметь дело оттуда (я не знаю ваших требований), но если вам нужно серьезно относиться к этому, используйте JodaTime, чтобы справиться с этим так же, как возможное.

+0

интересный. Я попробую это. Благодаря!! – yogsma

2

Также проверьте этот

public static XMLGregorianCalendar getGregorianDate(Date date) { 
     XMLGregorianCalendar xMLGregorianCalendar = null; 
     try { 
      GregorianCalendar c = new GregorianCalendar(); 
      c.setTime(date); 
      xMLGregorianCalendar = DatatypeFactory.newInstance() 
        .newXMLGregorianCalendar(c); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     return xMLGregorianCalendar; 
    } 

    public static Date getDate(XMLGregorianCalendar xmlGregorianCalendar) { 
     Date date = xmlGregorianCalendar.toGregorianCalendar().getTime(); 
     return date; 
    } 
0

Это довольно просто:

DateTime d = event.getEdited(); 

Date d = new Date(d.getValue()); 
0

Это испытаниеобучения я создал одну из шахтной применения:

package learning; 

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.util.GregorianCalendar; 
import java.util.TimeZone; 

import org.apache.commons.lang3.ArrayUtils; 
import org.junit.Assert; 
import org.junit.Test; 

import com.google.gdata.data.DateTime; 

public class GDataDateTimeTest { 

    @Test public void should_be_converted_to_gregorian_calendar() { 
//  String[] timeZoneIDs = TimeZone.getAvailableIDs(); 
//  for (String timeZoneID : timeZoneIDs) 
//   System.out.println(timeZoneID); 

     Date startingDate = date("02 Jan 2013"); 
     String timeZoneID = "Europe/London"; 

     DateTime datetime = new DateTime(startingDate, TimeZone.getTimeZone(timeZoneID)); 

     // *** start conversion to a gregorian calendar: 
     // we need to multiply the GData DateTime.tzShift * 60000 (the opposite of what you can find in the constructor used previously [search for the code]) 
     String[] availableTimeZoneIDsForOffset = TimeZone.getAvailableIDs(datetime.getTzShift() *60000); 
     // available timeZone IDs for the offset should contains our timeZoneID 
     Assert.assertTrue(ArrayUtils.contains(availableTimeZoneIDsForOffset, timeZoneID)); 

     // then create a GregorianCalendar with one of the timeZone found for the timeZone offset 
     // and set time in millis with GData DateTime.value 
     String oneOfTheTimeZonesFoundBefore = availableTimeZoneIDsForOffset[0]; 
     GregorianCalendar cal = new GregorianCalendar(TimeZone.getTimeZone(oneOfTheTimeZonesFoundBefore)); 
     cal.setTimeInMillis(datetime.getValue()); 
     Assert.assertEquals(startingDate.getTime(), cal.getTimeInMillis()); 
    } 

    private Date date(String dateAsText) { 
     try { 
      return new SimpleDateFormat("dd MMM yyyy").parse(dateAsText); 
     } catch (ParseException e) { 
      throw new RuntimeException(e); 
     } 
    } 

} 

У меня есть добавлены комментарии, которые помогут вам найти, как конвертировать GData DateTime с использованием смещения часового пояса.