2012-03-24 122 views
4

我的Java代码必须从控制台获取字符串“HH:MM”,并且需要使用它。 有没有可能从字符串解析这样的时间,以增加,例如,2小时。从字符串获取时间

BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 

System.out.print("Enter some time:"); 
String enteredTime = in.readLine(); 
// here I want to get time in some variable 

谢谢!

因为我必须得到三个日期,并定义其他日期之间有三个日期。 我知道我可以在零件上拆分字符串并使用它们,但我正在寻找简单的方法来操作这些时间。

我找到很好的解决办法:

SimpleDateFormat parser = new SimpleDateFormat("HH:mm"); 
Date ten = parser.parse("10:00"); 
Date eighteen = parser.parse("18:00"); 

try { 
    Date userDate = parser.parse(someOtherDate); 
    if (userDate.after(ten) && userDate.before(eighteen)) { 
    ... 
} 
} catch (ParseException e) { 
    // Invalid date was entered 
} 
+0

String#split(“:”)在这里可以很好地工作。查看更多的字符串API。 – 2012-03-24 15:17:56

+0

你试过了什么?至少在我的脑海中至少有三件事是java.text.DateFormat,java.text.SimpleDateFormat和java.util.Date ... – Bry6n 2012-03-24 15:18:43

+0

我需要得到三次,并定义是否有其他日期之间的第三次约会。 – 2012-03-24 15:23:40

回答

5
sdf = new java.text.SimpleDateFormat ("HH:mm"); 
sdf.parse ("13:47"); 
+4

被警告这会给你“Thu Jan 01 13:47:00 1970”! – nansen 2012-03-24 15:38:23

+0

这是正常的,我只需要计算时间,日期可以是任何 – 2012-03-24 15:45:52

2

你想要做一些日期算术比如增加持续时间为日期我明白了。那么你绝对应该使用joda time而不是java.util.Date和Calendar。

乔达给你Period和Duration实体和一个不错的和可重用的API。

+0

谢谢,我知道乔达,但不幸的是,我不能使用任何除Java外的API。 – 2012-03-24 15:40:49