我有我的时间在下面的格式,我使用此值来设置按钮的文本。
String strDateFormat = "HH:mm: a";
SimpleDateFormat sdf ;
sdf = new SimpleDateFormat(strDateFormat);
startTime_time_button.setText(sdf.format(date));
现在我的问题是,是否可以在此时间格式中添加一小时?
你必须使用 Calendar
:
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.HOUR_OF_DAY, 1);
date = cal.getTime();
我认为最好和最简单的方法是使用Apache Commons Lang:
Date incrementedDate = DateUtils.addHour(startDate, 1);
http://commons.apache.org/lang/api-2.6/org/apache/commons/lang/time/DateUtils.html
Calendar cal = Calendar.getInstance();
cal.setTime(setYourTimeHereInDateObj);
cal.add(Calendar.HOUR, 1);
Date timeAfterAnHour = cal.getTime();
//now format this time
看
- 日历 API 文档
如果你不能使用 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);
顺便说一句。硬编码日期格式并不是最好的主意。除非您有充分的理由不这样做,否则您应该使用对最终用户的区域设置 (DateFormat df = DateFormat.getTimeInstance(DateFormat.DEFAULT, locale);
) 有效的区域设置。否则,您会产生 i18n 缺陷(谁在乎,我知道)。
如果你对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