1

我想做一个改变我飞行模式的应用程序。我有一个时间选择器和一个日历。现在我想设置从 tp 到 cal 的时间。我做了 2 次吐司来控制两个对象的时间。tp 的吐司显示了正确的时间(fe 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();
                }
            });
4

3 回答 3

4

Nuno Gonçalves 提供的答案将解决您的问题。但是,当您向用户显示日期/时间时,最好使用android.text.format.DateFormat提供的日期/时间格式化程序。这样,信息以用户期望的方式显示(例如 12 小时与 24 小时时间等)。

所以,像这样:

Toast.makeText(this, "Calendar: "
                         + DateFormat.getTimeFormat(this).format(cal.getTime()));
于 2012-06-20T14:21:01.830 回答
4

您正在正确设置字段,但您不会像这样查询日历的字段。您在那里所做的是在日历类上打印 HOUR_OF_DAY 字段的 int 值,其值为 11(请参见此处)。

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();
于 2012-06-20T14:12:24.277 回答
0

您可以尝试以下日历实现:

Calendar calendar = Calendar.getInstance(Locale.getDefault());

于 2012-06-20T14:14:49.633 回答