我想制作一个让我改变飞机模式的应用程序。我有时间戳和日历。现在我想设置从tp到cal的时间。我做了两个吐司来控制两个物体的时间。来自tp的toast向我展示了正确的时间(例如13:04),但日历对象在“设置”错误时间之后(11:12) 我已经读过,如果调用像 getTimeinMillis()这样的方法,那么时间就会被设置,所以添加了这个方法,但它仍然没有工作。谢谢你的回答
Button b;
Button b2;
TimePicker tp;
Calendar cal;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
b = (Button)(findViewById(R.id.button1));
tp = (TimePicker)(findViewById(R.id.timePicker1));
cal = Calendar.getInstance();
b2 = (Button)(findViewById(R.id.button2));
b.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0) {
Toast.makeText(getApplicationContext(),"TimePicker "+ tp.getCurrentHour()+":"+tp.getCurrentMinute(), Toast.LENGTH_LONG).show();
cal.set(Calendar.HOUR_OF_DAY,tp.getCurrentHour());
cal.set(Calendar.MINUTE,tp.getCurrentMinute());
cal.set(Calendar.SECOND,0);
cal.getTimeInMillis();
Toast.makeText(getApplicationContext(),"Calendar "+ cal.HOUR_OF_DAY+":"+cal.MINUTE, Toast.LENGTH_LONG).show();
}
});
答案 0 :(得分:4)
您正在正确设置字段,但不查询日历字段。你在做什么是在日历类上打印HOUR_OF_DAY字段的int值,其值为11(See here)。
方法getTimeinMillis将返回自Epoch(1970年1月1日00:00:00 GMT)以来的毫秒数。它没有必要在那里。
使用:
Toast.makeText(getApplicationContext(),"Calendar "+ cal.get(Calendar.HOUR_OF_DAY) +":"+cal.get(Calendar.MINUTE), Toast.LENGTH_LONG).show();
答案 1 :(得分:4)
NunoGonçalves提供的答案将解决您的问题。但是,当您向用户显示日期/时间时,使用android.text.format.DateFormat提供的日期/时间格式化程序会更好。这样,信息以用户期望的方式显示(例如,12小时与24小时等)。
所以,像这样:
Toast.makeText(this, "Calendar: "
+ DateFormat.getTimeFormat(this).format(cal.getTime()));
答案 2 :(得分:0)
您可以尝试以下日历实施:
Calendar calendar = Calendar.getInstance(Locale.getDefault());