zoukankan      html  css  js  c++  java
  • Java常用类(I)-时间和日期

    java开发中,常涉及到时间的处理,这里就做一个总结,同样也是一个笔记。

    相关类及概念

    1. java.util.Date:表示特定的瞬间,精确到毫秒.由于API 不易于实现国际化,日期和时间字段之间转换等方法已被废弃。
    2. java.sql.Date:父类为java.util.Date,它包装了毫秒值的瘦包装器。toString方法后,yyyy-MM-dd。初始化需指定时间点毫秒数。多用于与数据库交互相关的时间设定。下同
    3. java.sql.Time:与 java.util.Date 类有关的瘦包装器。返回特定时间点毫秒数下的HH:mm:ss
    4. java.sql.Timestamp:与 java.util.Date 类有关的瘦包装器,同上,格式为:yyyy-MM-dd HH:mm:ss.SSS
    5. java.text.SimpleDateFormat:以与语言环境有关的方式来格式化和解析日期的具体类。允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化.
    6. java.util.Calendar:一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法
    7. java.util.GregorianCalendar:是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统

    场景

      a.格式转换

         字符串-> 日期(aDate=2018-11-22)

         1、通过SimpleDateFormat的parse方法

     SimpleDateFormat pattern=new SimpleDateFormat("yyyy-MM-dd");
     Date date1=pattern.parse(adate);
    View Code

        2、通过Timestamp的valueof

    String atime="1977-06-05 10:05:23.423";
    Timestamp atim=Timestamp.valueOf(atime);
    View Code

      b. 获取时间

        1、当前瞬间

    日期 Date date=new Date();
    毫秒数 System.currentTimeMills;
    日历 Calendar.getInstance();
    View Code

        2、指定毫秒数(12345678910L)

    日期:Date date1=new Date(12345678910L);    
    毫秒数(无)
    日历
    Calendar calendar= new GregorianCalendar();
    calendar.setTime(new Date(12345678910L));
    Integer year=calendar.get(Calendar.YEAR);
    View Code

        3、指定日期

    日期(无)
    毫秒数
    GregorianCalendar greCalendar=new GregorianCalendar(2018,11,22,5,7,8);
    Long millSeconds=greCalendar.getTime().getTime();
    日历(毫秒数的翻版)
    GregorianCalendar greCalendar=new GregorianCalendar();
    greCalendar.setTime(date);
    View Code

      c.指定格式

    当前时间为例
    Date date=new Date();
    SimpleDateFormat pattern=new SimpleDateFormat("yyyy年MM月dd日 HH小时mm分钟ss秒");
    System.out.pringln(pattern.format(date));
    View Code

    练习

    假如有一个IT公司,有10个人每日轮流值班(A~J)监控系统。那么从本周一开始的100天内,请问周末值班最多是哪位?有多少天?

    public class MapTest {
        public static void main(String[] args) {
            Map<String, Integer> hmap = new HashMap<>();
    
            String str="ABCDEFGHIJ";
            String[] strings=str.split("");
    
            SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd");
            Calendar cal = new GregorianCalendar();
            cal.setFirstDayOfWeek(Calendar.MONDAY);
            cal.setTime(new Date());
            cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
            for (int i = 0; i < 10; i++) {
                for (int j = 0; j < 10; j++) {
                    if (cal.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY || cal.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY){
                        if(hmap.get(strings[j])== null){
                            hmap.put(strings[j],1);
                        }else{
                            hmap.put(strings[j],hmap.get(strings[j])+1);
                        }
                        cal.add(Calendar.DATE,1);
                    }else{
                        cal.add(Calendar.DATE,1);
                    }
                }
            }
            for (Map.Entry<String,Integer> entry:hmap.entrySet()){
                System.out.println(entry);
            }
        }
    }
  • 相关阅读:
    【题解】Triangles 3000 [CF528E]
    【题解】Alyona and Triangles [CF682E]
    【题解】Siano [PA2015] [Bzoj4293] / Chika 的烦恼
    【题解】The Last Hole! [CF274C]
    基于usb4java实现的java下的usb通信
    Android中解析JSON形式的数据
    Morris.js-利用JavaScript生成时序图
    android读写SD卡封装的类
    LitePal——安卓数据库library
    关于Linux Mint下的pluma软件打开txt文本文件有时候乱码的解决办法
  • 原文地址:https://www.cnblogs.com/SunHuaJ/p/9954089.html
Copyright © 2011-2022 走看看