zoukankan      html  css  js  c++  java
  • 时间日期操作

    SimpleDateFormat函数语法:
      G 年代标志符
      y 年
      M 月
      d 日
      h 时 在上午或下午 (1~12)
      H 时 在一天中 (0~23)
      m 分
      s 秒
      S 毫秒
      E 星期
      D 一年中的第几天
      F 一月中第几个星期几
      w 一年中第几个星期
      W 一月中第几个星期
      a 上午 / 下午 标记符 
      k 时 在一天中 (1~24)
      K 时 在上午或下午 (0~11)
      z 时区

    1.获取当前时间的时间戳

    方式一:

    long time = System.currentTimeMillis();

    方式二:

    Date date = new Date();
    long time = date.getTime();

    方式三:

    Calendar calendar = Calendar.getInstance();
    long time = calendar.getTimeInMillis();

    方式四:

    Clock clock = Clock.systemUTC();
    long time = clock.millis();

    2.获取当前客户端时间

    Date date = new Date();  

    示例:Tue May 26 16:10:39 CST 2020

    3.字符串转日期

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
            String str = "2020/05/26 19:20:00";
            try {
                Date date1 = sdf.parse(str);
                System.out.println(date1);
            } catch (ParseException e) {
                e.printStackTrace();
            }

    结果:Tue May 26 19:20:00 CST 2020

    4.日期转字符串

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date now = new Date();
            String str = sdf.format(now);
            System.out.println(str);  

     结果:2020-05-26

    5.日期比较

    直接用Date自带方法before()和after()比较

    String startDate = "2020-05-23";
    String endDate = "2020-05-25";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    try {
    Date sd1 = sdf.parse(startDate);
    Date sd2 = sdf.parse(endDate);
    System.out.println(sd1.before(sd2));//true
    System.out.println(sd1.after(sd2));//false
    } catch (ParseException e) {
    e.printStackTrace();
    }

    用String的compareTo()方法比较

    String startDate = "2020-05-23";
    String endDate
    = "2020-05-25"; if(startDate.compareTo(endDate)< 0){ System.out.println("开始日期小于结束日期!"); }else { System.out.println("开始日期大于结束日期!"); }

    输出:开始日期小于结束日期!

    使用Date日期的getTime()方法转换为秒数后比较

    Date date1 = new Date();
            Date date2 = new Date(System.currentTimeMillis() - 100);//当前时间的100秒前
            if(date1.getTime() > date2.getTime()){
                System.out.println("date1 大于 date2");
            } 

    输出: date1 大于 date2

    5.MySQL日期相关

    见:https://www.cnblogs.com/zhukf/p/11956270.html

    6.判断两个日期年份月份是否相同

    public static boolean isSameDate(Date date1, Date date2) {
               try {
                Calendar cal1 = Calendar.getInstance();
                   cal1.setTime(date1);
    
                   Calendar cal2 = Calendar.getInstance();
                   cal2.setTime(date2);
    
                   boolean isSameYear = cal1.get(Calendar.YEAR) == cal2
                           .get(Calendar.YEAR);
                   boolean isSameMonth = isSameYear
                           && cal1.get(Calendar.MONTH) == cal2.get(Calendar.MONTH);
                   boolean isSameDate = isSameMonth
                           && cal1.get(Calendar.DAY_OF_MONTH) == cal2
                                   .get(Calendar.DAY_OF_MONTH);
    
                   return isSameDate;
            } catch (Exception e) {
                log.error("[RatingEngine] error occurred: ERROR ", e);
            }
            return false;
    
           }
    转自:https://blog.csdn.net/qq_33366229/article/details/78256962  

     Calendar是一个抽象类,所以不能实例化,但是可以调用getInstance()静态方法获得Calendar实例

    //调用静态方法获取Calendar实例(使用默认的TimeZone和Locale)
    Calendar calendar1 = Calendar.getInstance();
         // 获取时间戳(13位),毫秒
        long timeStamp = calendar1.getTimeInMillis();
     
        // 获取Date对象
        Date date1 = calendar1.getTime();
    
    
        // 设置时间
        Date date2 = new Date(System.currentTimeMillis() - 100);
        calendar1.setTime(date2);
    
    
        // 获取Calendar的字段值(比如YEAR、MONTH....)
        final int month = calendar1.get(Calendar.MONTH);
        System.out.println(month);  // 注意,month从0开始计算,9月返回8
    
    
        // 修改时间(为指定字段进行计算)
        calendar1.add(Calendar.YEAR, -1);   // 当前是2019年,这里将年份减1
        System.out.println(calendar1.get(Calendar.YEAR)); // 2018
    
    
        // 其他字段,比如月、天、时分秒的计算都是一样的做法
        // 获取某个字段的最大值(同样可以有对应的接口获取最小值)
        int maxDay = calendar1.getActualMaximum(Calendar.DAY_OF_MONTH);
        System.out.println(maxDay);  // 2018年9月,最多有30天
        Calendar calendar2 = Calendar.getInstance();
    
    
        // 设置指定字段值,注意,月份是从0开始计数
        calendar2.set(Calendar.YEAR, 2030);
    
    
        // 设置年月日
        calendar2.set(2029115);
        System.out.println(calendar2.getTime());
        // Wed Dec 05 18:06:30 CST 2029
    
    
        // 设置年月日时分秒
        calendar2.set(2030,104125859);
  • 相关阅读:
    SQL优化总结(转)
    ORA-04030: 在尝试分配...字节(...)时进程内存不足的原因分析解决方法
    MyEclipse 在线安装SVN插件
    jboss+ejb entityManager操作数据库
    struts2标签#、%、$取值
    ejb+weblogic布署(转)
    ejb+jboss集群(转)
    myeclipse配置jboss(转载)
    list-列表练习
    python-循环小练习
  • 原文地址:https://www.cnblogs.com/zhukf/p/12966387.html
Copyright © 2011-2022 走看看