首页 > 技术文章 > java 日期时间类加Calendar的set和add方法

19322li 2019-04-04 13:28 原文

java.util.Date
  子类:
  java.sql.Date  
  java.sql.Time
  java.sql.Timestamp
java.text.SimpleDateFormat  (支持其它几个时间类的格式化)
java.util.Calendar  Calendar类是一个抽象基类,主要用于日期之间的各种计算获取  获取对象的方式  Calendar cal = Calendar.getInstance();

java.util.Date日期格式为:年月日时分秒  在除了SQL语句的情况下面使用
java.sql.Date日期格式为:年月日    是针对SQL语句使用的
java.sql.Time日期格式为:时分秒      是针对SQL语句使用的
java.sql.Timestamp日期格式为:年月日时分秒纳秒(毫微秒)

 1 import java.util.Date;
 2 
 3 public class DateTest {
 4     public static void main(String[] args) {
 5         Date date = new Date();
 6         System.out.println(date);
 7     }
 8 
 9 }
10 //执行结果:
11 //Thu Apr 04 12:49:59 CST 2019
 1 import java.sql.Date;
 2 //使用给定的毫秒时间值构造日期对象。如果给定的毫秒值包含时间信息,驱动程序将
 3 //把时间组件设置为默认时区(运行应用程序的Java虚拟机的时区)中对应于0 GMT的时间。
 4 public class DateTest {
 5     public static void main(String[] args) {
 6         Date date = new Date(111111111);
 7         System.out.println(date);
 8     }
 9 
10 }
11 执行结果:
12 1970-01-02
import java.sql.Time;
import java.util.Date;

public class DateTest {
    public static void main(String[] args) {
        Date date = new Date();
        Time time = new Time(date.getTime());
        System.out.println(time);
    }

}
执行结果:
13:08:42
 1 import java.sql.Timestamp;
 2 import java.util.Date;
 3 
 4 public class DateTest {
 5     public static void main(String[] args) {
 6         Date date = new Date();
 7         Timestamp ts = new Timestamp(date.getTime());
 8         System.out.println(ts);
 9     }
10 
11 }
12 执行结果
13 2019-04-04 13:11:11.761

java.text.SimpleDateFormat 

年月日格式

日期和时间模式结果
"yyyy.MM.dd G 'at' HH:mm:ss z" 2001.07.04 AD at 12:08:56 PDT
"EEE, MMM d, ''yy" Wed, Jul 4, '01
"h:mm a" 12:08 PM
"hh 'o''clock' a, zzzz" 12 o'clock PM, Pacific Daylight Time
"K:mm a, z" 0:08 PM, PDT
"yyyyy.MMMMM.dd GGG hh:mm aaa" 02001.July.04 AD 12:08 PM
"EEE, d MMM yyyy HH:mm:ss Z" Wed, 4 Jul 2001 12:08:56 -0700
"yyMMddHHmmssZ" 010704120856-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ" 2001-07-04T12:08:56.235-0700
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTest {
    public static void main(String[] args) {
        Date date = new Date();
        DateFormat format = new SimpleDateFormat("yyy年MM月dd日  HH.mm.ss");
        System.out.println(format.format(date));
    }
}
执行结果:
2019年04月04日  13.19.38

java.util.Calendar

 1 import java.util.Calendar;
 2 
 3 public class DateTest {
 4     public static void main(String[] args) {
 5 //        Date date = new Date();
 6 //        DateFormat format = new SimpleDateFormat("yyy年MM月dd日  HH.mm.ss");
 7 //        System.out.println(format.format(date));
 8         Calendar cal = Calendar.getInstance();
 9         System.out.println(cal);
10     }
11 }
12 执行结果
13 java.util.GregorianCalendar[time=1554355353479,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=3,WEEK_OF_YEAR=14,WEEK_OF_MONTH=1,DAY_OF_MONTH=4,DAY_OF_YEAR=94,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=1,HOUR_OF_DAY=13,MINUTE=22,SECOND=33,MILLISECOND=479,ZONE_OFFSET=28800000,DST_OFFSET=0]
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateTest {
    public static void main(String[] args) {
        DateFormat format = new SimpleDateFormat("yyy年MM月dd日  HH.mm.ss");
        Calendar cal = Calendar.getInstance();
//        Date date = new Date();
        String s = format.format(cal.getTime());
        System.out.println(s);

    }
}
执行结果:
2019年04月04日  13.28.09

 Calendar的set 和add方法区别

 1 import java.text.DateFormat;
 2 import java.text.SimpleDateFormat;
 3 import java.util.Calendar;
 4 
 5 public class TestDemoCal {
 6     static void time(int year,int month,int day) {
 7         //输出5月32号   没有32号,所以输出1号
 8         Calendar cal = Calendar.getInstance();
 9 //        因为月份是从0开始的,set是单纯的设定日期,如果设定的日期不存在的话,他会向下移动。
10         cal.set(year, month, day);
11         DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
12         System.out.println(df.format(cal.getTime())); //格式化日期
13     }
14     public static void main(String[] args) {
15         
16         time(2019,4,32);
17     }
18 
19 }
20 //执行结果 
21 //2019-06-01
 1 import java.text.DateFormat;
 2 import java.text.SimpleDateFormat;
 3 import java.util.Calendar;
 4 
 5 public class TestDemoCal {
 6     static void time(int field ,int amount) {
 7         //输出5月32号   五月三十二号离四月五号有57天
 8         Calendar cal = Calendar.getInstance();
 9 //        add它移动的是日期的偏移量。
10         cal.add(field, amount);
11         DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
12         System.out.println(df.format(cal.getTime())); //格式化日期
13     }
14     public static void main(String[] args) {
15         
16         time(Calendar.DAY_OF_MONTH,57);
17     }
18 
19 }
20 //执行结果 
21 //2019-06-01

总结:想要更改输出的日期,先在Calendar的实例上调用add或者set方法改变日期,然后格式化输出cal.getTime(意思是获取当前毫秒数,类型是Date类型),想要单独获取年月日可以调用get方法,例如:cal.get(Calendar.Year);

推荐阅读