Подтвердить что ты не робот

Как преобразовать строку в формат времени и добавить два часа

У меня есть следующее требование в проекте.

У меня есть поле ввода по имени startDate, и пользователь входит в формате YYYY-MM-DD HH:MM:SS. Мне нужно добавить два часа для ввода пользователя в поле startDate. как я могу это сделать.

Заранее спасибо

4b9b3361

Ответ 1

Вы можете использовать SimpleDateFormat для преобразования String to Date. И после этого у вас есть два варианта:

  • Создайте объект Calendar, а затем используйте его для добавления двух часов или
  • получить время в миллисекундах с этого объекта даты и добавить два часа, например, (2 * 60 * 60 * 1000)

    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    
    // replace with your start date string
    Date d = df.parse("2008-04-16 00:05:05"); 
    Calendar gc = new GregorianCalendar();
    gc.setTime(d);
    gc.add(Calendar.HOUR, 2);
    Date d2 = gc.getTime();
    

    Или

    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    
    // replace with your start date string
    Date d = df.parse("2008-04-16 00:05:05");
    Long time = d.getTime();
    time +=(2*60*60*1000);
    Date d2 = new Date(time);
    

Посмотрите на эти руководства.

Ответ 2

Будучи поклонником Joda Time, вот как вы можете это сделать, используя Joda DateTime:

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

...    

String dateString = "2009-04-17 10:41:33";

// parse the string
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
DateTime dateTime = formatter.parseDateTime(dateString);

// add two hours
dateTime = dateTime.plusHours(2); // easier than mucking about with Calendar and constants

System.out.println(dateTime);

Если вам еще нужно использовать объекты java.util.Date до/после этого преобразования, API Joda DateTime предоставляет несколько простых toDate() и toCalendar() методы для простого перевода.

Joda API предоставляет гораздо больше возможностей для удобства по API Java Date/Calendar.

Ответ 3

Используйте метод SimpleDateFormat class parse(). Этот метод вернет объект Date. Затем вы можете создать объект Calendar для этого Date и добавить к нему 2 часа.

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = formatter.parse(theDateToParse);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.HOUR_OF_DAY, 2);
cal.getTime(); // This will give you the time you want.

Ответ 4

Попробуйте это, я тестирую его, работаю нормально

Date date = null;
String str = "2012/07/25 12:00:00";
DateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
date = formatter.parse(str);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.HOUR, 2);
System.out.println(calendar.getTime());  // Output : Wed Jul 25 14:00:00 IST 2012

Если вы хотите преобразовать в свой тип ввода, чем добавить этот код также

formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
str=formatter.format(calendar.getTime());
System.out.println(str);  // Output : 2012-07-25 14:00:00

Ответ 5

//the parsed time zone offset:
DateTimeFormatter dateFormat = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
String fromDateTimeObj = "2011-01-03T12:00:00.000-0800";
DateTime fromDatetime = dateFormat.withOffsetParsed().parseDateTime(fromDateTimeObj);

Ответ 6

Базовая программа добавления двух раз:
Вы можете изменить час: мин: сек в соответствии с вашими потребностями, если хотите.
Эта программа показывает вам, как вы можете добавлять значения из двух объектов и возвращаться в другой объект.

class demo
{private int hour,min,sec;
    void input(int hour,int min,int sec)
    {this.hour=hour;
    this.min=min;
    this.sec=sec;

    }
    demo add(demo d2)//demo  because we are returning object
    {   demo obj=new demo();
    obj.hour=hour+d2.hour;
    obj.min=min+d2.min;
    obj.sec=sec+d2.sec;
    return obj;//Returning object and later on it gets allocated to demo d3                    
    }
    void display()
    {
        System.out.println(hour+":"+min+":"+sec);
    }
    public static  void main(String args[])
    {
        demo d1=new demo();
        demo d2=new demo();
        d1.input(2, 5, 10);
        d2.input(3, 3, 3);
        demo d3=d1.add(d2);//Note another object is created
        d3.display();


    }

}

Модифицированная программа добавления времени

 class demo
 {private int hour,min,sec;
    void input(int hour,int min,int sec)
    {this.hour=(hour>12&&hour<24)?(hour-12):hour;
    this.min=(min>60)?0:min;
    this.sec=(sec>60)?0:sec;

    }
    demo add(demo d2)
    {   demo obj=new demo();
    obj.hour=hour+d2.hour;
    obj.min=min+d2.min;
    obj.sec=sec+d2.sec;
    if(obj.sec>60)
    {obj.sec-=60;
        obj.min++;
    }
    if(obj.min>60)
    {   obj.min-=60;
        obj.hour++;
    }
        return obj;
    }
    void display()
    {
        System.out.println(hour+":"+min+":"+sec);
    }
    public static  void main(String args[])
    {
        demo d1=new demo();
        demo d2=new demo();
        d1.input(12, 55, 55);
        d2.input(12, 7, 6);
        demo d3=d1.add(d2);
        d3.display();


    }

 }

Ответ 7

Этот пример представляет собой период времени и времени суммирования (строковые значения)

String DateVal = "2015-03-26 12:00:00";
String TimeVal = "02:00:00";

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm:ss");

Date reslt = sdf.parse( DateVal );
Date timeZ = sdf2.parse( TimeVal );
//Increase Date Time
reslt.setHours( reslt.getHours() + timeZ.getHours());
reslt.setMinutes( reslt.getMinutes() + timeZ.getMinutes());
reslt.setSeconds( reslt.getSeconds() + timeZ.getSeconds());

System.printLn.out( sdf.format(reslt) );//Result(+2 Hours):  2015-03-26 14:00:00 

Спасибо:)

Ответ 8

Это даст вам время, которое вы хотите (например: 21:31 PM)

//Add 2 Hours to just TIME
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss a");
Date date2 = formatter.parse("19:31:51 PM");
Calendar cal2 = Calendar.getInstance();
cal2.setTime(date2);
cal2.add(Calendar.HOUR_OF_DAY, 2);
SimpleDateFormat printTimeFormat = new SimpleDateFormat("HH:mm a");
System.out.println(printTimeFormat.format(cal2.getTime()));