日历api的问题

时间:2017-10-24 18:45:09

标签: android

我遇到日历api的问题:

public class MainActivity extends AppCompatActivity {

TextView t1, t2, t3;
Calendar c;
int day, hour, minute;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    t1=(TextView)findViewById(R.id.t1);
    t2=(TextView)findViewById(R.id.t2);
    t3=(TextView)findViewById(R.id.t3);

    c=Calendar.getInstance();
    day=c.get(Calendar.DAY_OF_WEEK);
    hour=c.get(Calendar.HOUR_OF_DAY);
    minute=c.get(Calendar.MINUTE);

    t1.setText(Integer.toString(day));
    t2.setText(Integer.toString(hour));
    t3.setText(Integer.toString(minute));

}

此代码应该为我提供3个textviews中的当前日期,小时和分钟 但是它给出了错误的值(只有几分钟是正确的),为什么它不起作用?

2 个答案:

答案 0 :(得分:0)

我自己运行此代码,但我没有看到任何错误。它于今天,星期二,下午2:50执行:

enter image description here

第一个TextView显示值" 3",这是常量Calendar.TUESDAY的定义值。 (一周的第一天定义为星期日,值的范围是1到7.)

第二个TextView显示值" 14"。 HOUR_OF_DAY使用24小时制,因此14与2PM相同。如果您想要12小时的时间,请使用Calendar.HOUR代替(但请注意,中午和午夜由" 0"代表" 12")。

第三个TextView显示值" 50"。这里不多说;这是下午2:50所以分钟是50。

答案 1 :(得分:-1)

您的代码是正确的,没有问题!如果您不知道Calendar中的java.utils不会直接返回字符串,而是当天的数字表示int,例如,如果星期几是星期日,您将会看到1。所以,如果你想要实际的字符串你必须自己转换。但如果你只想int什么也不做。此外,如果您使用c.get(Calendar.HOUR_OF_DAY);,您将获得24 hours系统中的小时数。如果你想在12 hours系统中,你将不得不使用c.get(Calendar.HOUR); (请记住这个方法是午夜,中午是0使用此方法)。我将添加一个方法来将int的工作日更改为“星期一”等字符串。

以下是您的完整代码应如何:

 public class MainActivity extends AppCompatActivity {

      TextView t1, t2, t3;
      Calendar c;
      int  hour, minute;
      String day;

     @Override
     protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);

     t1=(TextView)findViewById(R.id.t1);
     t2=(TextView)findViewById(R.id.t2);
     t3=(TextView)findViewById(R.id.t3);

     c=Calendar.getInstance();
     day= getDayOfWeek(c.get(Calendar.DAY_OF_WEEK));                         
     hour=c.get(Calendar.HOUR);
     minute=c.get(Calendar.MINUTE);

     t1.setText((day));
     t2.setText(Integer.toString(hour));
     t3.setText(Integer.toString(minute));

 private String getDayOfWeek(int value){
   String day = "";
   switch(value){
   case 1:
     day="Sunday";
     break;
   case 2:
     day="Monday";
     break;
   case 3:
     day="Tuesday";
     break;
   case 4:
     day="Wednesday";
     break;
   case 5:
     day="Thursday";
     break;
     case 6:
     day="Friday";
     break;
     case 7:
     day="Saturday";
     break;
   }
return day;
  }
}

我希望这会清除java中Calendar的一些误解! 快乐编码!