Domanda Java: come aggiungere 10 minuti nel mio tempo


Sto ottenendo questa volta

String myTime = "14:10";

Ora voglio aggiungere come 10 minuti a quest'ora, in modo che lo sarebbe 14:20

È possibile, e se sì, come?

Grazie


30
2018-01-26 08:36


origine


risposte:


Qualcosa come questo

 String myTime = "14:10";
 SimpleDateFormat df = new SimpleDateFormat("HH:mm");
 Date d = df.parse(myTime); 
 Calendar cal = Calendar.getInstance();
 cal.setTime(d);
 cal.add(Calendar.MINUTE, 10);
 String newTime = df.format(cal.getTime());

Come avvertimento ci potrebbero essere alcuni problemi se l'ora legale è coinvolta in questo periodo di 10 minuti.


65
2018-01-26 08:41



io userei Joda Time, analizza il tempo come a LocalTimee quindi utilizzare

time = time.plusMinutes(10);

Programma breve ma completo per dimostrarlo:

import org.joda.time.*;
import org.joda.time.format.*;

public class Test {
    public static void main(String[] args) {
        DateTimeFormatter formatter = DateTimeFormat.forPattern("HH:mm");
        LocalTime time = formatter.parseLocalTime("14:10");
        time = time.plusMinutes(10);
        System.out.println(formatter.print(time));
    }       
}

Nota che lo farei decisamente usa Joda Time invece di java.util.Date/Calendar se puoi, è a tanto API migliore.


18
2018-01-26 08:38



Uso Calendar.add(int field,int amount) metodo.


10
2018-01-26 08:38



Devi convertirlo in una data, dove puoi aggiungere un numero di secondi e convertirlo in una stringa.


2
2018-01-26 08:37



Java 7 Time API

    DateTimeFormatter df = DateTimeFormatter.ofPattern("HH:mm");

    LocalTime lt = LocalTime.parse("14:10");
    System.out.println(df.format(lt.plusMinutes(10)));

2
2017-11-26 10:54



Hai un sacco di approcci facili all'interno delle risposte di cui sopra. Questa è solo un'altra idea. Puoi convertirlo in millisecondi e aggiungere TimeZoneOffset e aggiungere / dedurre i minuti / ore / giorni ecc. Di millisecondi.

String myTime = "14:10";
int minsToAdd = 10;
Date date = new Date();
date.setTime((((Integer.parseInt(myTime.split(":")[0]))*60 + (Integer.parseInt(myTime.split(":")[1])))+ date1.getTimezoneOffset())*60000);
System.out.println(date.getHours() + ":"+date.getMinutes());
date.setTime(date.getTime()+ minsToAdd *60000);
System.out.println(date.getHours() + ":"+date.getMinutes());

Produzione :

14:10
14:20

0
2018-01-26 09:53



Consiglierei di memorizzare il tempo come numeri interi e di regolarlo tramite gli operatori di divisione e modulo, una volta fatto convertire gli interi nel formato di stringa richiesto.


0
2018-01-26 08:38



Ho usato il codice qui sotto per aggiungere un certo intervallo di tempo all'ora corrente.

    int interval = 30;  
    SimpleDateFormat df = new SimpleDateFormat("HH:mm");
    Calendar time = Calendar.getInstance();

    Log.i("Time ", String.valueOf(df.format(time.getTime())));

    time.add(Calendar.MINUTE, interval);

    Log.i("New Time ", String.valueOf(df.format(time.getTime())));

0
2018-06-24 14:26