在日历中设置时间(android)

时间:2012-06-20 14:00:42

标签: android timepicker

我想制作一个让我改变飞机模式的应用程序。我有时间戳和日历。现在我想设置从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();
                }
            });

3 个答案:

答案 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());