Строки в формате чч:мм

У меня есть две строки чч:мм, и я хочу сравнить их.

Я имею в виду, я хотел бы добавить или вычесть их, сделать операции. У меня есть строка с текущим временем и другая строка, которая говорит, например, «15:00». Я хочу знать, сколько минут между обеими строками, результат, который я могу получить, вычитая. Это возможно?


person Seba Paz    schedule 03.09.2013    source источник
comment
Да, это возможно. Однако в сети есть много ресурсов, которые могут вам в этом помочь. SO — это сайт вопросов и ответов. Нет запроса на обучение. Извините, если я груб, но это правда   -  person MarsOne    schedule 03.09.2013
comment
Прочтите о дате и SimpleDateFormat   -  person rocketboy    schedule 03.09.2013
comment
Преобразуйте в минуты, и тогда вы сможете легко добавлять/вычитать/сравнивать   -  person NeplatnyUdaj    schedule 03.09.2013


Ответы (3)


Вы можете разобрать его, используя SimpleDateFormat, а затем использовать метод getTime() из класса Date, чтобы получить разницу в миллисекундах.

DateFormat f = new SimpleDateFormat("hh:mm");
Date d1 = f.parse(s1);
Date d2 = f.parse(s2);
long difference = d1.getTime() - d2.getTime(); // milliseconds
person Mauren    schedule 03.09.2013

Вы можете использовать joda datetime для этого:

public static void main(String[] args) {

    DateTimeFormatter formatter = DateTimeFormat.forPattern("HH:mm");
    DateTime first = formatter.parseDateTime("15:00");
    DateTime second = formatter.parseDateTime("15:49");

    Interval interval = new Interval(first, second);
    System.err.println(interval.toDuration().getStandardMinutes());
}

Посмотрите здесь

Использование Duration также дает вам несколько других удобных методов, таких как getStandardSeconds(), которые дадут вам 2940 для этого случая.

person u6f6o    schedule 03.09.2013

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

String time1 = "15:00";
String time2 = "16:00";

DateFormat sdf = new SimpleDateFormat("hh:mm");
Date date1 = sdf.parse(time1);
Date date2 = sdf.parse(time2);

long milliSecondsDiff = date1.getTime() - date2.getTime(); //in milliseconds
int seconds = milliSecondsDiff/1000; //seconds
int minutes = seconds/60; //minutes
person Venkata Krishna    schedule 03.09.2013
comment
Вы можете использовать a.getTime() - b.getTime(), чтобы получить разницу в миллисекундах. - person Peter Lawrey; 03.09.2013
comment
@PeterLawrey абсолютно .. не хотел отдавать его до того, как OP опубликует код .. спасибо - person Venkata Krishna; 03.09.2013