Android 日历api的问题
我对日历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
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将时区设置为零!