我正在尝试在特定日期和时间设置闹钟。所以使用Calendar
设置小时和分钟。但是当我尝试使用{{1}访问Calendar
中设置的小时时我获得的值与手动设置的值不同。
代码
cal.set
我想要的结果
警报有效。 7:30:0
我现在得到什么
警报有效。 10点12分13秒
P.S
1.我发现许多帖子涉及Calendar cal=Calendar.getInstance();
cal.set(Calendar.HOUR,7);
cal.set(Calendar.MINUTE,30);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
Toast.makeText(getApplicationContext(), "Alarm worked. "+cal.HOUR+cal.MINUTE,cal.SECOND Toast.LENGTH_LONG).show();
个问题,但找不到我的解决方案。
2.我得到的结果即Calendar
不是我当前的时间(当前日期,当前分钟,当前秒数)。所以我不知道为什么以及这些数据来自哪里。< / p>
3.我尝试使用10:12:13
代替HOUR_OF_DAY
,但没有用。
解决方案
HOUR
这很有效,因为Toast.makeText(getApplicationContext(), "Alarm worked. "+cal.get(Calendar.HOUR)+" "+cal.get(Calendar.MINUTE)+" "+cal.get(Calendar.SECOND), Toast.LENGTH_LONG).show();
,Calendar.HOUR
是常数。请参阅@PopoFibo的答案以获得清晰的图片。
答案 0 :(得分:1)
日期s = cal.getTime();
SimpleDateFormat sdf = new SimpleDateFormat(“HH:mm:ss a”);
String t = sdf.format(s);
Toast.makeText(this,t,Toast.LENGTH_SHORT).show();
更多参考。见http://www.asbhtechsolutions.com/android-tutorial/1-android-get-current-time-and-date
答案 1 :(得分:1)
问题在于您的Toast
,您正在打印Calendar
类的常量:
Calendar.HOUR = 10
Calendar.MINUTE = 12
Calendar.SECOND = 13
相反,请在各自的索引处获取值 - 例如HOUR
cal.get(Calendar.HOUR)
System.out.println(cal.get(Calendar.HOUR) + ":" + cal.get(Calendar.MINUTE) + ":" + cal.get(Calendar.SECOND));
会给出(正确的输出):
7:30:0
而且,System.out.println(Calendar.HOUR + ":" + Calendar.MINUTE + ":" + Calendar.SECOND);
会给出(输出错误):
10:12:13
答案 2 :(得分:0)
你可以尝试:
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 7);
calendar.set(Calendar.MINUTE, 30);
然后干杯
答案 3 :(得分:0)
在设定时间之前添加这些行..
Cal.set(Calendar.MONTH , month);
Cal.set(Calendar.YEAR, year);
Cal.set(Calendar.DAY_OF_MONTH,day);