我在項目中有以下要求。如何將字符串轉換爲時間格式並添加兩個小時
我有一個名稱爲startDate
的輸入字段,用戶輸入的格式爲YYYY-MM-DD HH:MM:SS
。 我需要在startDate
字段中爲用戶輸入添加兩個小時。我該怎麼做。
在此先感謝
我在項目中有以下要求。如何將字符串轉換爲時間格式並添加兩個小時
我有一個名稱爲startDate
的輸入字段,用戶輸入的格式爲YYYY-MM-DD HH:MM:SS
。 我需要在startDate
字段中爲用戶輸入添加兩個小時。我該怎麼做。
在此先感謝
您可以使用SimpleDateFormat將字符串轉換爲日期。在這之後,你有兩個選擇,
獲得自該日起對象毫秒的時間,並添加2小時像,( 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);
看看這些教程。
使用SimpleDateFormat
類parse()
方法。此方法將返回一個Date
對象。然後,您可以爲此Date
創建一個Calendar
對象,併爲其添加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.
我正在給代碼。請告訴我它是否正確 日曆EDate = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat(「yyyy-MM-dd hh:mm:ss」); EDate.setTime(sdf.parse(enddate)); EDate.add(Calendar.Hour,1); – user48094 2009-04-17 04:46:20
您擁有的日期字符串是AM還是PM?因爲你已經使用了小寫hh和Calendar.HOUR。我的代碼使用你的小時是24小時週期。 – 2009-04-17 04:48:58
身爲Joda Time庫的粉絲,這裏是如何使用這樣做的一個喬達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
對象/這種轉換之後, Joda DateTime
API提供了一些易於使用的易於翻譯的toDate()
和toCalendar()
方法。
Joda API在Java日期/日曆API方面提供了更多便利。
//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);
試試這個,我測試了一下,做工精細
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
增加兩個的基本程序次:
您可以根據自己的需要修改小時:分鐘:秒。
該程序顯示如何從兩個對象中添加值並返回到另一個對象中。
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();
}
}
這個例子是日期時間和時區(字符串值)
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
謝謝:)
一個總和這會給你你的時間NT(如: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()));
LocalDateTime.parse(
"2018-01-23 01:23:45".replace(" " , "T")
).plusHours(2)
現代的方法使用java.time類添加到Java 8,爪哇9,以後。 MM::
用戶格式YYYY-MM-DD HH進入SS
解析該輸入字符串轉換成日期時間對象。您的格式接近與標準ISO 8601的格式,在java.time類默認用於解析/生成的字符串規定。爲了完全符合,與T
中間更換空間。
String input = "2018-01-23 01:23:45".replace(" " , "T") ; // Yields: 2018-01-23T01:23:45
解析爲一個LocalDateTime
因爲你的投入沒有時區的任何指示或偏移從-UTC。
LocalDateTime ldt = LocalDateTime.parse(input) ;
添加2小時
的java.time類可以爲你做數學題。
LocalDateTime twoHoursLater = ldt.plusHours(2) ;
要知道,一個LocalDateTime
不不代表了一會兒,在時間軸上的一個點。如果沒有UTC時區或偏移量的上下文,它就沒有真正的意義。名稱中的「本地」部分是指任何本地或沒有地方,而不是任何一個特定的地方。只是說「中午1月21」可能意味着中午在奧克蘭,新西蘭這恰好幾個小時早於中午在法國巴黎。
要定義一個實際的時刻,你必須指定一個區域或偏移。
ZoneId z = ZoneId.of("Africa/Tunis") ;
ZonedDateTime zdt = ldt.atZone(z) ; // Define an actual moment, a point on the timeline by giving a context with time zone.
如果你知道某些預期的時區,應用它之前添加兩個小時。做數學時LocalDateTime
類假定簡單通用的24個小時。但在不同日期的不同時區,天數可能是23或25小時,或可能是其他長度。因此,要在分區環境中獲得正確結果,請將小時添加到ZonedDateTime
而不是LocalDateTime
。
的java.time框架是建立在Java 8和更高版本。這些類代替了日期時間類legacy,如java.util.Date
,Calendar
,& SimpleDateFormat
。
Joda-Time項目現在位於maintenance mode,建議遷移到java.time類。請參閱Oracle Tutorial。並搜索堆棧溢出了很多例子和解釋。規格是JSR 310。
從何處獲取java.time類?
的ThreeTen-Extra項目與其他類擴展java.time。這個項目是未來可能增加java.time的一個試驗場。您可以在這裏找到一些有用的類,如Interval
,YearWeek
,YearQuarter
和more。
誤讀爲「stardate」。我甚至不喜歡*星際迷航。 – 2010-10-06 17:17:30