我的时间采用以下格式,我使用此值设置按钮的文本。
String strDateFormat = "HH:mm: a";
SimpleDateFormat sdf ;
sdf = new SimpleDateFormat(strDateFormat);
startTime_time_button.setText(sdf.format(date));
现在我的问题是, 这个时间格式可以加一小时吗?
答案 0 :(得分:9)
您必须使用Calendar
:
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.HOUR_OF_DAY, 1);
date = cal.getTime();
答案 1 :(得分:6)
我认为最好和最简单的方法是使用Apache Commons Lang:
Date incrementedDate = DateUtils.addHour(startDate, 1);
http://commons.apache.org/lang/api-2.6/org/apache/commons/lang/time/DateUtils.html
答案 2 :(得分:3)
Calendar cal = Calendar.getInstance();
cal.setTime(setYourTimeHereInDateObj);
cal.add(Calendar.HOUR, 1);
Date timeAfterAnHour = cal.getTime();
//now format this time
查看强>
答案 3 :(得分:2)
如果你不能使用Jabal的建议(即你不允许使用非JDK库),你可以使用它:
long hour = 3600 * 1000; // 3600 seconds times 1000 milliseconds
Date anotherDate = new Date(date.getTime() + hour);
如果您正在寻找时区转换,只需将一个转换为格式化程序,它就会更快地运行:
TimeZone timeZone = TimeZone.getTimeZone("UTC"); // put your time zone instead of UTC
sdf.setTimeZone(timeZone);
顺便说一句。硬编码日期格式不是最好的想法。除非你有充分的理由不这样做,否则你应该使用对最终用户的Locale(DateFormat df = DateFormat.getTimeInstance(DateFormat.DEFAULT, locale);
)有效的那个。否则你会创建i18n缺陷(谁知道,我知道)。
答案 4 :(得分:0)
如果您对Calendar.HOUR
和Calendar.HOUR_OF_DAY
之间的使用感到困惑。与Calendar.MILLISECOND
val nextHour: Date = Calendar.getInstance().also {
it.time = Date() // set your date time here
}.also {
it.add(Calendar.MILLISECOND, 1 * 60 * 60 * 1000) // 1 Hour
}.time