Android 获取网络时间而非手机系统时间

项目中有时候会用到获取网络时间来进行倒计时,但是获取系统时间和手机本地的时间是同步的,如果手机时间不对,那么获取的时间也是手机本地不对的时间。

多的不说了上代码

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;
    }
————————————————
版权声明:本文为CSDN博主「csdnwangyong」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/csdnwangyong/article/details/105071636


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部