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;
    }

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值