zoukankan      html  css  js  c++  java
  • 大二寒假作业之账本开发

    今日完成的对日期的操作类,由于用到日期,还要对日期进行操作,所以日期的存储要单独保存,即年,月,日分别存储。

    并保存从1970年1月1日到现在的毫秒值以方便锁定日期范围。并创建CDateTime类方便对日期的操作。以下为CDateTime的代码部分:

    public class CDateTime {
        public static final long MSEC_PER_DAY = 86400000L;
        private Calendar myCalendar=Calendar.getInstance();//取得一个Calendar的实例
    
    
        /*构造部分*/
        public CDateTime(){
    
        }
        public CDateTime(long msec){
            this();
            myCalendar.setTimeInMillis(msec);//根据传递的long值设置由此Calendar表示的Calendars时间。
        }
        public CDateTime(int year,int month,int day,int hour,int minute,int second){
            this();
            myCalendar.set(year,month-1,day,hour,minute,second);//月份从0开始
        }
        public CDateTime(int year,int month,int day){
            this();
            myCalendar.set(year,month,day);
            myCalendar.set(Calendar.MILLISECOND,0);//设置秒为0
        }
        public CDateTime(String sDate,String separator){//将字符日期分解为数字
            this();
            String[] date=sDate.split(separator);
            if(date.length!=3)return;
            int y=Integer.parseInt(date[0]);
            int m=Integer.parseInt(date[1]);
            int d=Integer.parseInt(date[2]);
            if(checkDate(y,m,d))
                myCalendar.set(y,m-1,d);
        }
        public static boolean checkDate(int year,int month,int day){//检查日期是否符合格式
            return true;
        }
        public static boolean chackDateString(String sDate,String separator){
            String[]date =sDate.split(separator);
            if(date.length!=3)return false;
            return checkDate(Integer.parseInt(date[0]),Integer.parseInt(date[1]),Integer.parseInt(date[3]));
        }//检查日期字符是否符合
        /*构造部分*/
    
    
        /*set与get部分*/
        public void setMes(long msec){
            myCalendar.setTimeInMillis(msec);
        }
        public void setDateTime(int year,int month,int day,int hour,int minute,int second){
            myCalendar.set(year, month-1, day, hour, minute, second);
        }
        public void setDateTime(int year,int month,int day){
            myCalendar.set(year, month-1, day,0,0,0);
            myCalendar.set(Calendar.MILLISECOND,0);
        }
    
        public int year(){
            return myCalendar.get(Calendar.YEAR);
        }
        public boolean isLeapYear(){//判断是否为闰年
            int y=year();
            return isLeapYear(y);
        }
        public static boolean isLeapYear(int y){
            return (y%400==0||(y%100!=0&&y%4==0));
        }
        public int month() {
            return myCalendar.get(Calendar.MONTH+1);
        }
        public int day(){
            return myCalendar.get(Calendar.DAY_OF_MONTH);
        }
        public int weekday(){
            return myCalendar.get(Calendar.DAY_OF_WEEK)-1;
        }
        public int weekOfMonth(){
            return myCalendar.get(Calendar.WEEK_OF_MONTH);
        }
        public int quarter(){
            return myCalendar.get(Calendar.MONTH)/3+1;
        }
        public int hour(){
            return myCalendar.get(Calendar.HOUR_OF_DAY);
        }
        public int minute(){
            return myCalendar.get(Calendar.MINUTE);
        }
        public int second(){
            return myCalendar.get(Calendar.SECOND);
        }
        public int millisecond(){
            return myCalendar.get(Calendar.MILLISECOND);
        }
        public long getTimeInMillis(){
            return myCalendar.getTimeInMillis();
        }
        public static int daysInMonth(int year,int month){
            switch (month){
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:
                    return 31;
                case 4:
                case 6:
                case 9:
                case 11:
                    return 30;
                case 2:
                    return (isLeapYear(year)?29:28);
                default:
                    return -1;
            }
        }
        /*set与get部分*/
    
    
        public static long startOfDay(long msec){
            return msec/MSEC_PER_DAY*MSEC_PER_DAY;
        }
        public static long endOfDay(long msec){return (msec/MSEC_PER_DAY+1L)*MSEC_PER_DAY-1L;}
        public long startOfDay(){
            long msec=myCalendar.getTimeInMillis();
            return startOfDay(msec);
        }
        public long endOfDay(){
            long msec=myCalendar.getTimeInMillis();
            return endOfDay(msec);
        }
    
    
    
        /*数据库操作*/
        public static class SqlBuilder{
            //指定两个日期范围
            public static String dateRange(long startTime,long endTime){
                long min,max;
                if(startTime<=endTime){
                    min=startOfDay(startTime);
                    max=endOfDay(endTime);
                }else{
                    min=startOfDay(endTime);
                    max=endOfDay(startTime);
                }
                return String.format("between %d and %d",min,max);
            }
            //指定某一天
            public static String inDay(long msec){
                long startTime=startOfDay(msec);
                long endTime=endOfDay(msec);
                return String.format("between %d and %d",startTime,endTime);
            }
            //指定某个月
            public static String inMonth(long msec){
                CDateTime dt=new CDateTime(msec);
                int year =dt.year();
                int month=dt.month();
                CDateTime dtStart=new CDateTime(year,month,1);
                CDateTime dtEnd=new CDateTime(year,month,daysInMonth(year,month));
                return String.format("between %d and %d",dtStart.startOfDay(),dtEnd.endOfDay());
            }
            //指定某一年
            public static String inYear(long msec){
                CDateTime dt=new CDateTime(msec);
                int year=dt.year();
                CDateTime dtStart=new CDateTime(year,1,1);
                CDateTime dtEnd=new CDateTime(year,12,31);
                return String.format("between %d and %d",dtStart.startOfDay(),dtEnd.endOfDay());
            }
        }
        /*数据库操作*/
        
    }
  • 相关阅读:
    面向对象-01
    网络编程-02-客户端搭建
    网络编程-01-服务端搭建
    日志-02
    日志-01
    md5加密
    shell 第五天
    shell第四天
    shell第三天
    shell
  • 原文地址:https://www.cnblogs.com/fengchuiguobanxia/p/14406357.html
Copyright © 2011-2022 走看看