我正在开发一个我希望增加时间的应用程序。但我不知道如何考虑如何改变一天。如果我有
9:45 pm + 3:30
应该给出
凌晨1点15分
感谢您的帮助
答案 0 :(得分:3)
String time = "2:00 pm";
SimpleDateFormat df = new SimpleDateFormat("hh:mm a");
Date date = df.parse(time);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.HOUR, 3);
cal.add(Calendar.MINUTE, 30);
int h = cal.get(Calendar.HOUR_OF_DAY);
int m = cal.get(Calendar.MINUTE);
将于下午5:30打印
编辑:HOUR_OF_DAY提供24小时的
答案 1 :(得分:1)
prod=[]
def cartesian_product(set1,set2,n):
if n>=1:
for x in set1:
for y in set2:
prod.append('%s,%s'%(x,y))
#prod='[%s]' % ', '.join(map(str, prod))
#print prod
cartesian_product(set1,prod,n-1)
else:
print prod
n=raw_input("Number of times to roll: ")
events=["1","2","3","4","5","6"]
cartesian_product(events,events,1)
输出:
import java.util.Calendar;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.text.DateFormat;
class SumHours{
public static void main(String[] args){
DateFormat dateFormat = new SimpleDateFormat("h:mm a");
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY,21);
cal.set(Calendar.MINUTE,45);
Date d = cal.getTime();
System.out.println(dateFormat.format(d));
cal.add(Calendar.HOUR, 3);
cal.add(Calendar.MINUTE, 30);
d = cal.getTime();
System.out.println(dateFormat.format(d));
}
}
答案 2 :(得分:1)
由于有很多人想要回答这个重复的问题(正如我所看到的),我认为是时候有人贡献了现代答案。
我知道你使用的是Android Java 7,直到Java 8进入Android,现代的答案要求你使用外部库ThreeTenABP。但是,不仅在该库中较新的Java日期和时间类可以更好地使用,当涉及到时间算术时,这是他们有一个特别强大的点。所以想一想,试一试。这也是未来,因为这些类内置了Java 8及更高版本。
DateTimeFormatter timeFormatter
= DateTimeFormatter.ofPattern("h:mm a", Locale.ENGLISH);
LocalTime startTime = LocalTime.of(21, 45);
Duration hoursToAdd = Duration.ofHours(3).plusMinutes(30);
LocalTime resultTime = startTime.plus(hoursToAdd);
System.out.println("" + startTime.format(timeFormatter) + " + " + hoursToAdd
+ " = " + resultTime.format(timeFormatter));
打印:
9:45 PM + PT3H30M = 1:15 AM
我想在你的问题中给你小写pm
和am
以及3:30
。我承认我们不在那里。特别是PT3H30M
如果您还没有学习ISO 8601语法,那就很奇怪了。这意味着只需3小时30分钟,当您知道时很容易。 Duration
对象不适合格式化,它在Java 9中会有所帮助,但只要Java 8尚未进入Android,我们就离开了。如果您更喜欢小写pm
,则可以在this answer: displaying AM and PM in small letter after date formatting中找到解决方案。
我的代码可能没有其他答案中的代码那么短,但恕我直言,它更容易阅读。
答案 3 :(得分:0)
如果你想在任何地方调用它,这是其中一个决定:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class TimeClass {
static String timeStart24 = "21:45";
static String timeStart = "09:45 PM";
static String timeStep = "3:30";
public String TimeClass(String start, String step) throws ParseException {
// Take hours and minutes apart
String[] time = step.split(":");
// Create format of time
SimpleDateFormat df = new SimpleDateFormat("hh:mm a");
SimpleDateFormat df24 = new SimpleDateFormat("HH:mm");
// Input begining time
Date from = df.parse(start);
System.out.println(df.format(from));
System.out.println(df24.format(from) + " - 24 hours format");
// Create calendar instance
Calendar cal = Calendar.getInstance();
cal.setTime(from);
// Inner method add of Calendar
cal.add(Calendar.HOUR_OF_DAY, Integer.parseInt(time[0]));
cal.add(Calendar.MINUTE, Integer.parseInt(time[1]));
System.out.println(df.format(cal.getTime()));
// System.out.print(df24.format(cal.getTime()));
return df.format(cal.getTime());
}
public static void main(String[] args) throws ParseException {
TimeClass tc = new TimeClass();
tc.TimeClass(timeStart, timeStep);
}
}
<强>输出强>:
09:45 PM
21:45 - 24 hours format
01:15 AM