Android 日历api的问题

Android 日历api的问题,android,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.la

我对日历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个文本视图中显示当前日期、小时和分钟
但是它给出了错误的值(只有几分钟是正确的),为什么它不工作呢?

我自己运行了这段代码,没有发现任何错误。今天,星期二,下午2:50执行:

第一个
TextView
显示值“3”,这是常量
日历的定义值。星期二
。(一周的第一天定义为星期日,值的范围为1到7。)

第二个
TextView
显示值“14”<代码>一天中的小时数使用24小时时间,因此14与下午2点相同。如果您想要12小时的时间,请改用
Calendar.hour
(注意中午和午夜用“0”表示,而不是“12”)


第三个
TextView
显示值“50”。这里没什么好说的;当时是下午2:50,所以分钟数是50。

您的代码是正确的,没有问题!如果您不知道,
java.utils
中的
Calendar
不会直接返回字符串,而是返回当天的数字表示形式
int
,例如,如果一周中的某一天是星期天,您将看到
1
。因此,如果你想要实际的字符串,你必须自己转换。但是如果你只想
int
什么也不做。如果您使用
c.get(日历小时/天)您将在
24小时系统中获得小时数。如果你想进入
12小时
系统,你必须使用
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中
日历中的一些误解快乐编码

什么错误的值?在这里评论或编辑问题是的,我现在没有,因为第一天被定义为星期天,所以day is value是正确的,但是hour(24小时格式)仍然是错误的,它给了我两个小时的时间,我找不到错误。非常感谢,我没有看到android studio emulator将时区设置为零!