时间日期操作---本文的正确性有待您验证。

/**
 * java.util.Date
 * Date的每一个实例可以表示一个确切的时间。内部维护一个long值,
 * 该值为1970年元旦到其所表示的时间之间所经过的毫秒值。
 * 由于Date设计存在缺陷,所以大部分针对时间操作的方法全部过时,
 * 现在仅用该类表示一个时间。其他操作由Calendar完成。
 * @author  Administrator
 *
 */
public class DateTest {
    public static void main(String[] args) {
        /*
         * 默认为当前系统时间
         */
        Date date = new Date();
        System.out.println(date);
        
        /*
         * long getTime()
         * 获取Date内部维护的long值,即:
         * 1970年到该时间之间经过的毫秒值
         */
        long time = date.getTime();
        System.out.println(time);
        
        /*
         * void setTime(long time)
         * 将给定的long值设置到Date中,使其
         * 表示该时间。
         */
        time += 1000*60*60*24;
        date.setTime(time);
        System.out.println(date);        
    }
}
/**
 * java.util.Calendar
 * 日历类 用于操作时间的类。
 * Calendar是抽象类,提供了便于操作时间的相关方法定义。
 * 常用实现类为阳历历法。
 * @author  Administrator
 *
 */
public class CalendarTest{
    public static void main(String[] args) {
        /*
         * 默认创建出来表示当前系统时间。
         * static Calendar getInstance()
         * 该方法会根据当前系统所在地区返回合适的Calendar实现类,
         * 通常是GregorianCalendar,即:公历
         */
        Calendar calendar = Calendar.getInstance();
        //toString信息很多,但不能直观读到时间
        System.out.println(calendar);
        
        /*
         * Calendar --> Date  Calendar提供了方法:
         * Date getTime()
         * 该方法会将其表示的时间以Date类型返回。
         */
        Date date = calendar.getTime();
        System.out.println(date);
                
        /*
         * Date --> Calendar  Calendar提供了方法:
         * void setTime(Date date)
         * 该方法会使当前Calendar表示给定的Date所表示的时间。
         */
        calendar.setTime(date);                        
    }
}
/**
 * Calendar提供了对指定时间分量(时间单位)设置值的方法:
 * void set(int field,int value)
 * @author  Administrator
 *
 */
public class CalendarDemo2 {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();        
        System.out.println(calendar.getTime());
        /*
         * 让Calendar表示日期为:2008-08-08 20:08:08
         */
        //设置年
        calendar.set(Calendar.YEAR, 2008);
        //设置月 月从0开始,有常量对应
//        calendar.set(Calendar.MONTH, Calendar.AUGUST);
        calendar.set(Calendar.MONTH, 7);
        
        //设置日
        calendar.set(Calendar.DAY_OF_MONTH, 8);
        
        //设置时
        calendar.set(Calendar.HOUR_OF_DAY, 20);
        
        //设置分
        calendar.set(Calendar.MINUTE, 8);
        
        //设置秒
        calendar.set(Calendar.SECOND, 8);
        System.out.println(calendar.getTime());
        
        /*
         * 设置为周三
         * 1表示周日,2表示周一,...
         * 也可以使用常量
         */
        calendar.set(Calendar.DAY_OF_WEEK, 4);
        System.out.println(calendar.getTime());    

        /**
         * int get(int field)
         * 获取指定时间分量所对应的值
         */
        Calendar calendar = Calendar.getInstance();
        //获取年
        int year = calendar.get(Calendar.YEAR);
        //获取月
        int month = calendar.get(Calendar.MONTH)+1;
        //获取日
        int day = calendar.get(Calendar.DATE);
        System.out.println(year+"-"+month+"-"+day);
        
        //查看今天是今年的第几天?
        int days = calendar.get(Calendar.DAY_OF_YEAR);
        System.out.println("今天是今年的第"+days+"天");
        
        //查看周几?
        int d = calendar.get(Calendar.DAY_OF_WEEK);
        System.out.println("周"+(d==1?7:d-1));
        char[] data = {'日','一','二','三','四','五','六',};
        System.out.println("周"+data[d-1]);

        /**
          * 获取某个时间分量所允许的最大值
         */
        Calendar calendar
            = Calendar.getInstance();
        
        //当月共多少天?
        int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
        System.out.println(days);
        /**
         * 计算时间
         * void add(int field,int value)
         * 对指定的时间分量加上指定的值,若指定的值是负数,
         * 则是减去指定的值。
         */
        Calendar calendar = Calendar.getInstance();
        
        //计算3年4个月零25天以后是哪天?
        calendar.add(Calendar.YEAR, 3);
        calendar.add(Calendar.MONTH, 4);
        calendar.add(Calendar.DAY_OF_YEAR, 25);    
        System.out.println(calendar.getTime());
        
        //再看前14天?
        calendar.add(Calendar.DAY_OF_YEAR, -14);
        System.out.println(calendar.getTime());    
    }
}
/**
 * java.text.SimpleDateFormat
 * 该类的作用是可以按照指定的日期格式,将String与Date互相转换。
 * @author  Administrator
 *
 */
public class SimpleDateFormatTest{
    public static void main(String[] args) {
        Date date = new Date();
        System.out.println(date);
        /*
         * 2016-03-29 10:22:55
         * yyyy-MM-dd HH:mm:ss
         */
        SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
        /*
         * Date-->String
         * String format(Date date)
         * 将给定的Date表示的时间按照指定的日期格式进行转换。
         */
        String str = sdf.format(date);
        System.out.println(str);
        
        String str = "2008-08-08 20:08:00";
        /*
         * String --> Date
         * Date parse(String str)
         * 将给定的字符串按照指定的日期格式转换为Date对象
         *   
         */
        Date date = sdf.parse(str);        
        System.out.println(date);
    }
}

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

/**
 * 计算商品促销日
 * @author Administrator
 *
 */
public class Test01 {
    public static void main(String[] args) throws ParseException {
        /*
         * 1:获取用户输入
         * 2:将字符串转换为Date
         * 3:将Date转换为Calendar
         * 4:计算
         * 5:将Calendar转换为Date
         * 6:将Date转换为String并输出
         */
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入生产日期(yyyy-MM-dd):");
        String line = scanner.nextLine();
        System.out.println("请输入保质期(天数):");
        String dayStr = scanner.nextLine();
        int day = Integer.parseInt(dayStr);
        
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf.parse(line);
        
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        
        //计算过期日
        calendar.add(Calendar.DAY_OF_YEAR, day); 

        //设置促销日期     
        calendar.add(Calendar.DAY_OF_YEAR, -14);        
        calendar.set(Calendar.DAY_OF_WEEK, 4);        
        date = calendar.getTime();            
        System.out.println("促销日为:"+sdf.format(date));    
    }
}

你可能感兴趣的:(calendar,Data)