我需要设置时间的当前日期。 时间字符串始终以24小时格式,但结果我得到的是错误的:
SimpleDateFormat df = new SimpleDateFormat("kk:mm");
Date d1 = df.parse("10:30");
Calendar c1 = Calendar.getInstance();
c1.set(Calendar.HOUR, d1.getHours());
c1.set(Calendar.MINUTE, d1.getMinutes());
日期应该是当天的日期,并设置到10:30的时间。 相反,在C1的时间最终被22:30。 我怎样才能迫使日历控件认识我的时间为24小时格式?
编辑:如果我只是这样做:
Calendar c1 = Calendar.getInstance();
c1.set(Calendar.HOUR, 10);
c1.set(Calendar.MINUTE, 30);
这给了我同样的结果。 为什么?
Answer 1:
替换此:
c1.set(Calendar.HOUR, d1.getHours());
有了这个:
c1.set(Calendar.HOUR_OF_DAY, d1.getHours());
Calendar.HOUR严格12小时。
Answer 2:
使用SimpleDateFormat df = new SimpleDateFormat("HH:mm");
代替
UPDATE
@Ingo是正确的。 为更好利用setTime(d1);
第一种方法getHours()
和getMinutes()
现在已经过时
我测试此代码
SimpleDateFormat df = new SimpleDateFormat("hh:mm");
Date d1 = df.parse("23:30");
Calendar c1 = GregorianCalendar.getInstance();
c1.setTime(d1);
System.out.println(c1.getTime());
输出是确定Thu Jan 01 23:30:00 FET 1970
试试这个
SimpleDateFormat df = new SimpleDateFormat("KK:mm aa");
Date d1 = df.parse("10:30 PM");
Calendar c1 = GregorianCalendar.getInstance(Locale.US);
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
c1.setTime(d1);
String str = sdf.format(c1.getTime());
System.out.println(str);
Answer 3:
您可以设置日历仅上午或下午。使用方法
calendar.set(Calendar.AM_PM,int);在
0 = AM
1 = PM
希望这可以帮助
Answer 4:
我使用fullcalendar在我最近的项目,我不知道你想达到什么确切的视图效果,在我的项目,我想从改变从12小时格式事件时间视图
以24小时格式。
如果这是你想要达到的效果,下面的解决方案可以帮助:
设置timeFormat: 'H:mm'
Answer 5:
private void setClock() {
Timeline clock = new Timeline(new KeyFrame(Duration.ZERO, e -> {
Calendar cal = Calendar.getInstance();
int second = cal.get(Calendar.SECOND);
int minute = cal.get(Calendar.MINUTE);
int hour = cal.get(Calendar.HOUR_OF_DAY);
eski_minut = minute;
if(second < 10){
time_label.setText(hour + ":" + (minute) + ":0" + second);
}else if (minute < 10){
time_label.setText(hour + ":0" + (minute) + ":0" + second);
}
else {
time_label.setText(hour + ":" + (minute) + ":" + second);}
}),
new KeyFrame(Duration.seconds(1))
);
clock.setCycleCount(Animation.INDEFINITE);
clock.play();
}
Answer 6:
试试这个 :
SimpleDateFormat df = new SimpleDateFormat("hh:mm");
要么
SimpleDateFormat df = new SimpleDateFormat("KK:mm");
参考: SimpleDateFormat的
Answer 7:
在这里,你会得到各种时间相关的问题。 我希望这将解决您的问题。
public class MyClass {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
// To get the current hour
int hour = cal.get(Calendar.HOUR_OF_DAY);
System.out.println("hour: " + hour);
// To get the current time in 12 hours format
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a",Locale.US);
String a = sdf.format(cal.getTime());
System.out.println("Time: " + a);
// To get the desired time in 12 hours format from 23 hours format
cal.set(Calendar.HOUR_OF_DAY, 24);
SimpleDateFormat sdf1 = new SimpleDateFormat("hh:mm a",Locale.ENGLISH);
String a1 = sdf1.format(cal.getTime());
System.out.println("Time: " + a1);
/* H Hour in day (0-23)
k Hour in day (1-24)
*/
//To get the desired time in 24 hours format as 0-23 or 1-24
cal.set(Calendar.HOUR_OF_DAY, 24);
SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm",Locale.ENGLISH);
SimpleDateFormat sdf3 = new SimpleDateFormat("kk:mm",Locale.ENGLISH);
String a2 = sdf2.format(cal.getTime());
String a3 = sdf3.format(cal.getTime());
System.out.println("Time: " + a2);
System.out.println("Time: " + a3);
//For example, time like 12:30 PM. How can i convert to 24 hours time in java?
SimpleDateFormat bigFormat = new SimpleDateFormat("kk:mm");
SimpleDateFormat smallFormat = new SimpleDateFormat("hh:mm a");
Date date = null;
try {
date = smallFormat.parse("12:30 AM");
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(smallFormat.format(date) + " = " + bigFormat.format(date));
}
}
Answer 8:
TL;博士
LocalTime.parse( "10:30" ) // Parsed as 24-hour time.
java.time
避免麻烦的旧日期,时间类,如Date
和Calendar
是现在由java.time类取代。
LocalTime
该java.time类提供一种方式来表示时间的天没有日期,没有一个时区: LocalTime
LocalTime lt = LocalTime.of( 10 , 30 ); // 10:30 AM.
LocalTime lt = LocalTime.of( 22 , 30 ); // 22:30 is 10:30 PM.
ISO 8601
该java.time类生成和解析字符串时,使用标准的ISO 8601种格式默认。 这些格式使用24小时的时间。
String output = lt.toString();
LocalTime.of(10,30)的ToString():10:30
LocalTime.of(22,30)的ToString():22:30
所以解析10:30
将被解释为10:30。
LocalTime lt = LocalTime.parse( "10:30" ); // 10:30 AM.
DateTimeFormatter
如果你需要生成或解析12小时点击格式字符串与AM / PM,使用DateTimeFormatter
类。 提示:请指定的习惯Locale
。
Answer 9:
如果你在函数的SimpleDateFormat(“HH”)与(“HH”)取代将在24小时而不是12格式小时。
SimpleDateFormat df = new SimpleDateFormat("HH:mm");
文章来源: How to set time to 24 hour format in Calendar