项目中有时候会用到获取网络时间来进行倒计时,但是获取系统时间和手机本地的时间是同步的,如果手机时间不对,那么获取的时间也是手机本地不对的时间。
多的不说了上代码
private void getCalendarTime(){
final Calendar c = Calendar.getInstance();
c.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
String mYear = String.valueOf(c.get(Calendar.YEAR));//年
String mMonth = String.valueOf(c.get(Calendar.MONTH) + 1);//月
String mDay = String.valueOf(c.get(Calendar.DAY_OF_MONTH));//日
String mHour = String.valueOf(c.get(Calendar.HOUR_OF_DAY));//24小时格式 HOUR(12小时格式)
String mMinute = String.valueOf(c.get(Calendar.MINUTE));//分
String mSecond = String.valueOf(c.get(Calendar.SECOND));//秒
tv1.setText(mYear+"-"+mMonth+"-"+mDay+" "+mHour+":"+mMinute+":"+mSecond);
}
输出时间为
其中注意获取的月份必须要加1,因为Calendar.MONTH获取到时间是从0开始的,也就是0~~11月而不是1~~12
上面输出的时间为 2020-3-24-14:40:8 而不是我常见的2020-03-24 14:40:08
那么这只需要简单的判断一下就可以得到我们需要的格式:
/**
* 个位数的时候前面补一个0
* @param num
* @return
*/
public static String getStrs(int num){
String string ;
if (isNum(num)){
string= String.valueOf(num);
}else {
string="0"+num;
}
return string;
}
/**
* 判断是否为个位数
* @param num
* @return
*/
public static boolean isNum(int num){
boolean isNum;
if (num >9) {
isNum=true;
} else {
isNum=false;
}
return isNum;
}
最终对输入的值进行判断
String time=mYear+"-"+getStrs(mMonth)+"-"+getStrs(mDay)+" "+getStrs(mHour)+":"+getStrs(mMinute)+":"+getStrs(mSecond);
对月 、日、时、分、秒进行判断,年肯定不会为个位数,至此就得到了我们需要的
"yyyy-MM-dd HH:mm:ss"格式的时间
例如一下输出
E/测试网络时间: 2020-03-24 14:57:18
完整的代码如下:
/*
* 使用Calendar获取系统时间
*/
private void getCalendarTime(){
final Calendar c = Calendar.getInstance();
c.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
int mYear = c.get(Calendar.YEAR);//年
int mMonth = c.get(Calendar.MONTH) + 1;//月
int mDay = c.get(Calendar.DAY_OF_MONTH);//日
int mHour = c.get(Calendar.HOUR_OF_DAY);//24小时格式 HOUR(12小时格式)
int mMinute = c.get(Calendar.MINUTE);//分
int mSecond = c.get(Calendar.SECOND);//秒
String time=mYear+"-"+getStrs(mMonth)+"-"+getStrs(mDay)+" "+getStrs(mHour)+":"+getStrs(mMinute)+":"+getStrs(mSecond);
tv1.setText(time);
Log.e("测试网络时间",time);
}
/**
* 个位数的时候前面补一个0
* @param num
* @return
*/
public static String getStrs(int num){
String string ;
if (isNum(num)){
string= String.valueOf(num);
}else {
string="0"+num;
}
return string;
}
/**
* 判断是否为个位数
* @param num
* @return
*/
public static boolean isNum(int num){
boolean isNum;
if (num >9) {
isNum=true;
} else {
isNum=false;
}
return isNum;
}