zoukankan      html  css  js  c++  java
  • 显示日期

    显示当前日期(实时)

    System.currentTimeMillis()可以获取系统当前的时间,这里要实时显示就可以开启一个线程,然后通过handler发消息,来实时的更新TextView上显示的系统时间。具体就是写一个线程,线程里面无限循环,每隔一秒发送一个消息,在主线程里面处理消息并更新时间。

       class TimeThread extends Thread {
            @Override
            public void run() {
                do {
                    try {
                        Thread.sleep(1000);
                        Message msg = new Message();
                        msg.what = 1;  //消息(一个整型值)
                        mHandler.sendMessage(msg);// 每隔1秒发送一个msg给mHandler
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                } while (true);
            }
        }
     
        //在主线程里面处理消息并更新UI界面
        private Handler mHandler = new Handler(){
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                switch (msg.what) {
                    case 1:
                        //long sysTime = System.currentTimeMillis();//获取系统时间
                        //CharSequence sysTimeStr = DateFormat.format("hh:mm:ss", sysTime);//时间显示格式
                       // time.setText(sysTimeStr); //更新时间

          SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
          String dateStr = dateformat.format(System.currentTimeMillis());
          textView.setText(dateStr);

                        break;
                    default:
                        break;
     
                }
            }
        };

    然后在需要时启动线程就好,如下:

     protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          requestWindowFeature(Window.FEATURE_NO_TITLE);//去除标题栏
          setContentView(R.layout.activity_main);
          new TimeThread().start(); //启动新的线程
     }

    ————————————————————

    参考:https://blog.csdn.net/xch_yang/article/details/80590911

    反过来,如果给我们一个“ 2019-03-31 22:40:00 ”字符串,得到当前日期对应的毫秒值

    SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    try {
        long time = dateformat.parse("2019-03-31 22:40:00").getTime();
        System.out.println(time);
    } catch (ParseException e) {
        e.printStackTrace();
    }

    输出结果:I/System.out: 1554043200000

    获取当前毫秒值

    long nowDate = System.currentTimeMillis(); //结束时间
    System.out.println(nowDate);

     输出结果:  I/System.out:   1585502810765

    所以说,

    这两种都可以获取当前时间的毫秒数,只是

    一个是直接计算

    long nowDate = System.currentTimeMillis(); //结束时间
    System.out.println(nowDate);

    一个是手动输入时间

    try {
    long time = dateformat.parse("2020-03-30 08:48:17").getTime();
    System.out.println(time);
    } catch (ParseException e) {
    e.printStackTrace();
    }



    结果: I/System.out: 1585529297000
    I/System.out: 1585529270262



    计算现在距离过去某时间的天数和时间

        SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    // String dateStr = dateformat.format(System.currentTimeMillis());
    // textView.setText(dateStr);


    long nd = 24 * 60 * 60;
    long nh = 60 * 60;
    long nm = 60;

    // long endDate = 1554043200000L;
    try {
    long endDate = dateformat.parse("2019-03-31 22:40:00").getTime();
    long nowDate = System.currentTimeMillis(); //结束时间
    // long ns = 1000;
    // 获得两个时间的秒时间差异
    long diff = (nowDate/1000L) - (endDate/1000L);
    // 计算差多少天
    long day = diff / nd;
    // 计算差多少小时
    long hour = diff % nd / nh;
    // 计算差多少分钟
    long min = diff % nd % nh / nm;
    // 计算差多少秒//输出结果
    long sec = diff % nd % nh % nm;
    String res = "";
    if(day != 0){
    res += day + "";
    }
    if(hour != 0){
    res += " "+hour + ":"+min + ":"+sec;
    }
    System.out.println(res);

    } catch (ParseException e) {
    e.printStackTrace();
    }


    运行结果:I/System.out: 364天  10:39:17


    实时显示某日到现在的距离

    class TimeThread extends Thread {
    @Override
    public void run() {
    do {
    try {
    Thread.sleep(1000);
    Message msg = new Message();
    msg.what = 1; //消息(一个整型值)
    mHandler.sendMessage(msg);// 每隔1秒发送一个msgmHandler
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    } while (true);
    }
    }

    //在主线程里面处理消息并更新UI界面
    private Handler mHandler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
    super.handleMessage(msg);
    switch (msg.what) {
    case 1:
    long nd = 24 * 60 * 60;
    long nh = 60 * 60;
    long nm = 60;
    // long endDate = 1554043200000L;
    try {
    SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    long endDate = dateformat.parse("2019-03-31 22:40:00").getTime();
    long nowDate = System.currentTimeMillis(); //结束时间
    // long ns = 1000;
    // 获得两个时间的秒时间差异
    long diff = (nowDate/1000L) - (endDate/1000L);
    // 计算差多少天
    long day = diff / nd;
    // 计算差多少小时
    long hour = diff % nd / nh;
    long hour1 = hour/10;
    long hour2 = hour%10;
    // 计算差多少分钟
    long min = diff % nd % nh / nm;
    long min1 = min/10;
    long min2 = min%10;
    // 计算差多少秒//输出结果
    long sec = diff % nd % nh % nm;
    long sec1 = sec/10;
    long sec2 = sec%10;
    String distance = "";
    if(day != 0){
    distance += day + "";
    }
    if(hour != 0){
    distance += " "+hour1+hour2 + ""+min1+min2 + ""+sec1+sec2 +"";
    }
    // System.out.println(distance);
    textView.setText(distance);

    } catch (ParseException e) {
    e.printStackTrace();
    }
    // long sysTime = System.currentTimeMillis();//获取系统时间
    // CharSequence sysTimeStr = DateFormat.format("hh:mm:ss", sysTime);//时间显示格式
    // textView.setText(sysTimeStr); //更新时间

    /*实时显示现在时间
    SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String dateStr = dateformat.format(System.currentTimeMillis());
    textView.setText(dateStr);
    */
    break;
    default:
    break;

    }
    }
    };



    然后oncreate里面调用
    new TimeThread().start(); //启动新的线程
  • 相关阅读:
    Ethical Hacking
    Ethical Hacking
    Ethical Hacking
    Ethical Hacking
    Ethical Hacking
    Ethical Hacking
    Oil Skimming HDU
    Rain on your Parade HDU
    Swap HDU
    棋盘游戏 HDU
  • 原文地址:https://www.cnblogs.com/xtxt1127/p/12596723.html
Copyright © 2011-2022 走看看