Конвертировать строку ЧЧММ в формат GMT на Java - PullRequest
0 голосов
/ 14 июля 2011

Мне нужно преобразовать строку формы ЧЧММ (в EST или EDT - сегодня) в метку времени по Гринвичу в форме ГГГГММДД-ЧЧ: ММ: СС.Поэтому, если я получу 1512, я хочу выразить 3: 12EDT по времени GMT и в формате: 20110714-20: 12: 00.Как я могу это сделать?

Я пробовал следующий код, и он не конвертируется вообще.

    int hour = Integer.parseInt(HHMM.substring(0, 2));
    int min  = Integer.parseInt(HHMM.substring(2, 4));

    Date day = new Date();
    day.setHours(hour);
    day.setMinutes(min);
    day.setSeconds(00); 
    DateFormat gmtFormat = new SimpleDateFormat();
    gmtFormat.setTimeZone(TimeZone.getTimeZone("GMT"));

    gmtFormat.format(day);

    return day.getYear() + "" + day.getMonth() + "" + 
           day.getDate() + "-" + day.getHours() + ":" + 
           day.getMinutes() + ":" + day.getSeconds();

Ответы [ 4 ]

1 голос
/ 14 июля 2011

Это немного короче и понятнее (IMO) в Joda :

public static String printIsoTime(String hhmm)    {
    DateTimeFormatter fmt = DateTimeFormat.forPattern("HHmm");

    // construct datetime from local midnight + parsed hhmm
    DateTime localDateTime = new LocalDate().toDateTime(
        fmt.parseDateTime(hhmm).toLocalTime());

    // convert to UTC and print in ISO format
    return ISODateTimeFormat.dateHourMinuteSecond()
        .print(localDateTime.withZone(DateTimeZone.UTC));
}
0 голосов
/ 15 июля 2011

Спасибо за ваши ответы, я объединил несколько ответов, чтобы в итоге получить следующий код, который правильно преобразует в GMT и дает мне требуемую отформатированную строку.

private static String convertHHMMtoGMT(String HHMM)
{       
    Calendar day = Calendar.getInstance();
    day.set(Calendar.HOUR_OF_DAY, hour);
    day.set(Calendar.MINUTE, min);
    day.set(Calendar.SECOND, 00);
    day.set(Calendar.MILLISECOND, 00);    

    SimpleDateFormat gmtFormat = new SimpleDateFormat("yyyyMMdd-HH:mm:ss");
    gmtFormat.setTimeZone(TimeZone.getTimeZone("GMT"));

    return gmtFormat.format(day.getTime());
}
0 голосов
/ 14 июля 2011

Вы действительно должны использовать Календарь, но то, как вы его сейчас настроили, должно работать:

Date day = new Date();
day.setHours(3);
day.setMinutes(12);
day.setSeconds(00);

SimpleDateFormat gmtFormat = new SimpleDateFormat("yyyyMMdd-hh:mm:ss");
gmtFormat.setTimeZone(TimeZone.getTimeZone("GMT") );

Date fmtDay = gmtFormat.format(day);
System.out.println("fmtDay: " + fmtDay);
0 голосов
/ 14 июля 2011

Как насчет

    //obtain a formatted string with the year day month information for today
    Date today = new Date();
    SimpleDateFormat todaySdf = new SimpleDateFormat("yyyyMMdd-");
    String todaySdfString = todaySdf.format(today);

    //now concatenate today's info from above with the time info and then parse the whole thing
    SimpleDateFormat edtFormat = new SimpleDateFormat("yyyyMMdd-HH:mmz");
    Date dt = edtFormat.parse(todaySdfString+"15:12EDT");

    //now GMT
    SimpleDateFormat gmtFormat = new SimpleDateFormat("yyyyMMdd-HH:mm:ss");
    gmtFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
    String fmtDt = gmtFormat.format(dt);
    System.out.println("fmtDt = " + fmtDt);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...