Java中简单日期类和日历类的小结
2015-01-06 16:26
351 查看
日期类是用来描述日期的,在java中日期都是用long来保存的(精确到毫秒)
任何日期类都可以用long来相互转换
java中有4种日期类
java.util.Date :常用的类,功能少,能表示时间和日期
java.sql.Date:它是java.util.Date的子类,表示日期
java,sql.Time:它是java.util.Date的子类,表示时间
java.sql.Time:它是java.util.Date的子类,表示时间和日期
日期的特征:
年份 y 由整数 y - 1900 表示。
月份由从 0 至 11 的整数表示;0 是一月、1 是二月等等;因此 11 是十二月。
日期(一月中的某天)按通常方式由整数 1 至 31 表示。
小时由从 0 至 23 的整数表示。因此,从午夜到 1 a.m. 的时间是 0 点,从中午到 1 p.m. 的时间是 12 点。
分钟按通常方式由 0 至 59 的整数表示。
秒由 0 至 61 的整数表示(有闰秒,但极少发生)
构造方法:
Date date=new Date();
可以获得当前的系统日期
另一种方法:long System.currentTimeMillis()
也是获得系统时间,但得到的时间是long类型,单位是毫秒
Date(long date)
将一个long类型转化为Date类型
比较时间前后关系
boolean after(Date date) :是否date之后
boolean before(Date date) :是否在date之前
将Date转换成字符串
String toLocaleString() :以过时,基本不用
long getTime()
返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数
方便JDBC对日期进行识别
我们可以利用sql包中的日期类来实现字符串与日期类之间的转换
其他时候用得不多
ava.sql.Date
表示日期
java.sql.Time
表示时间
java.sql.Timestamp
表示日期 + 时间
将字符串转换成日期
都是java.util.Date的子类,所以该类中的方法也都被继承下来了
static Date valueOf(String s)
静态方法,直接通过类名调用
三个类都有这个方法,但对字符串格式有不同的要求
Date d = Date.valueOf("2014-12-2");
Time t = Time.valueOf("13:2:2");
Timestamp tt = Timestamp.valueOf("2014-12-12 16:00:36");
转换原则
任何日期类型都可以和long类型相互转换
日期 -> long long = d.getTime()
long -> 日期 new Date(long)
String可以转换成sql包下的任何日期类型
sql包和util包的日期转换需要用long作为中间类型
日期的转换方法
日期构造方法
getTime()
获得日期的long表示
valueOf()
sql包日期类的方法,将String转换成日期
日历类:
java.util.Calendar是一个抽象类,不能实例化对象
获得java.util.Calendar类的对象
static Calendar getInstance()
java.util.Calendar中定义的域
DATE MONTH YEAR
HOUR MINUTE SECOND
DAY_OF_WEEK 一个星期中的某天
SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY 和 SATURDAY
MONTH
JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER
java.util.Calendar 常用方法
void add(int field, int amount)
在某个域个加一个数,负数向前,正数向后
boolean after(Object when)
boolean before(Object when)
int get(int field)
获得某一个域的值
Date getTime()
获得java.util.Date日期类型,与之相反的是setTime(Date date)
void set(int field, int value)
在特定的域上赋值
格式化日期:
所谓格式化日期就是将日期对象以特定字符串输出
java.text.DateFormat是负责格式化日期的类
抽象类
基本用法
DateFormat df = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
String s = df.format(new java.util.Date());
模式字符是代表特定含义的通用字符
yyyy 年份
yy 两位的年份
MM 月份
dd 日
HH 小时(24小时制)
hh 小时(12小时制)
mm 分
ss 秒
E 星期
根据下面的动画所示编写代码,功能是当用户输入年份和月份时,打印出该月的日历。
请打印出某一年的日历,按下面的要求完成试题:
1)定义一个方法,用于输出某一个月的日历
2)定义一个方法,用于输出某一年中所有月份的日历
任何日期类都可以用long来相互转换
java中有4种日期类
java.util.Date :常用的类,功能少,能表示时间和日期
java.sql.Date:它是java.util.Date的子类,表示日期
java,sql.Time:它是java.util.Date的子类,表示时间
java.sql.Time:它是java.util.Date的子类,表示时间和日期
日期的特征:
年份 y 由整数 y - 1900 表示。
月份由从 0 至 11 的整数表示;0 是一月、1 是二月等等;因此 11 是十二月。
日期(一月中的某天)按通常方式由整数 1 至 31 表示。
小时由从 0 至 23 的整数表示。因此,从午夜到 1 a.m. 的时间是 0 点,从中午到 1 p.m. 的时间是 12 点。
分钟按通常方式由 0 至 59 的整数表示。
秒由 0 至 61 的整数表示(有闰秒,但极少发生)
构造方法:
Date date=new Date();
可以获得当前的系统日期
另一种方法:long System.currentTimeMillis()
也是获得系统时间,但得到的时间是long类型,单位是毫秒
Date(long date)
将一个long类型转化为Date类型
比较时间前后关系
boolean after(Date date) :是否date之后
boolean before(Date date) :是否在date之前
将Date转换成字符串
String toLocaleString() :以过时,基本不用
long getTime()
返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数
/** * 1请输入当前的系统时间 2 请将1418370681966转换成日期输出 * * @author Al菜菜 * */ public class DateDemo01 { public static void main(String[] args) { { java.util.Date date = new java.util.Date(); System.out.println(date.toLocaleString()); } { java.util.Date date=new java.util.Date(1418370681966L); System.out.println(date.toLocaleString()); } } }sql包中定义了与数据库有关的类
方便JDBC对日期进行识别
我们可以利用sql包中的日期类来实现字符串与日期类之间的转换
其他时候用得不多
ava.sql.Date
表示日期
java.sql.Time
表示时间
java.sql.Timestamp
表示日期 + 时间
将字符串转换成日期
都是java.util.Date的子类,所以该类中的方法也都被继承下来了
static Date valueOf(String s)
静态方法,直接通过类名调用
三个类都有这个方法,但对字符串格式有不同的要求
Date d = Date.valueOf("2014-12-2");
Time t = Time.valueOf("13:2:2");
Timestamp tt = Timestamp.valueOf("2014-12-12 16:00:36");
转换原则
任何日期类型都可以和long类型相互转换
日期 -> long long = d.getTime()
long -> 日期 new Date(long)
String可以转换成sql包下的任何日期类型
sql包和util包的日期转换需要用long作为中间类型
日期的转换方法
日期构造方法
getTime()
获得日期的long表示
valueOf()
sql包日期类的方法,将String转换成日期
/** * 请将“2014-12-12”转换成java.util.Date类型 * 请将"2014-12-12 16:09:22"转换成java.sql.Timestamp类型 * 请将java.util.Date转换成java.sql.Date类型和java.sql.Time类型 * 请将java.sql.Date转换成java.sql.Timestamp * * @author Al菜菜 * */ public class DateDemo02 { public static void main(String[] args) { { java.sql.Date date=java.sql.Date.valueOf("2014-12-12"); java.util.Date date1=new java.util.Date(date.getTime()); } { java.sql.Timestamp ts=java.sql.Timestamp.valueOf("2014-12-12 16:09:22"); } { java.util.Date date=new java.util.Date(); java.sql.Date date1=new java.sql.Date(date.getTime()); java.sql.Time t=new java.sql.Time(date.getTime()); } { java.sql.Date date=java.sql.Date.valueOf("2015-1-6"); java.sql.Timestamp ts=new java.sql.Timestamp(date.getTime()); } } }
日历类:
java.util.Calendar是一个抽象类,不能实例化对象
获得java.util.Calendar类的对象
static Calendar getInstance()
java.util.Calendar中定义的域
DATE MONTH YEAR
HOUR MINUTE SECOND
DAY_OF_WEEK 一个星期中的某天
SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY 和 SATURDAY
MONTH
JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER
java.util.Calendar 常用方法
void add(int field, int amount)
在某个域个加一个数,负数向前,正数向后
boolean after(Object when)
boolean before(Object when)
int get(int field)
获得某一个域的值
Date getTime()
获得java.util.Date日期类型,与之相反的是setTime(Date date)
void set(int field, int value)
在特定的域上赋值
格式化日期:
所谓格式化日期就是将日期对象以特定字符串输出
java.text.DateFormat是负责格式化日期的类
抽象类
基本用法
DateFormat df = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
String s = df.format(new java.util.Date());
模式字符是代表特定含义的通用字符
yyyy 年份
yy 两位的年份
MM 月份
dd 日
HH 小时(24小时制)
hh 小时(12小时制)
mm 分
ss 秒
E 星期
根据下面的动画所示编写代码,功能是当用户输入年份和月份时,打印出该月的日历。
<pre name="code" class="java">import java.util.Calendar; import java.util.Scanner; public class Test02 { /** * 静态方法 * @param year * @param month */ public static void printMonth(int year,int month){ Calendar c = Calendar.getInstance(); c.set(Calendar.YEAR, year); c.set(Calendar.MONTH, month - 1); c.set(Calendar.DATE, 1); int dayOfMonth = c.getActualMaximum(Calendar.DATE); int dayOfWeek = c.get(Calendar.DAY_OF_WEEK) - 1; int n = dayOfMonth + dayOfWeek; int count = 0; System.out.println("\n"+year+"年"+month+"月\n"+"日\t一\t二\t三\t四\t五\t六"); for (int i = 0; i < n; i++) { count++; if (i < dayOfWeek) System.out.print(" " + "\t"); else System.out.print((i - dayOfWeek + 1) + "\t"); if (count == 7) { count = 0; System.out.println(); } } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println(请输入年 月); int year=sc.nextInt(); int month=sc.nextInt(); printMonth(year,month); } }
请打印出某一年的日历,按下面的要求完成试题:
1)定义一个方法,用于输出某一个月的日历
2)定义一个方法,用于输出某一年中所有月份的日历
import java.util.Calendar; import java.util.Scanner; public class Test02 { /** * 静态方法 * @param year * @param month */ public static void printMonth(int year,int month){ Calendar c = Calendar.getInstance(); c.set(Calendar.YEAR, year); c.set(Calendar.MONTH, month - 1); c.set(Calendar.DATE, 1); int dayOfMonth = c.getActualMaximum(Calendar.DATE); int dayOfWeek = c.get(Calendar.DAY_OF_WEEK) - 1; int n = dayOfMonth + dayOfWeek; int count = 0; System.out.println("\n"+year+"年"+month+"月\n"+"日\t一\t二\t三\t四\t五\t六"); for (int i = 0; i < n; i++) { count++; if (i < dayOfWeek) System.out.print(" " + "\t"); else System.out.print((i - dayOfWeek + 1) + "\t"); if (count == 7) { count = 0; System.out.println(); } } } /** * 静态方法 * @param year */ public static void printYear(int year){ for(int i=1;i<13;i++){ printMonth(year, i); } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int year=sc.nextInt(); int month=sc.nextInt(); printYear(year); printMonth(year,month); } }
相关文章推荐
- 一个java实现的简单日历,采用左树右列表的方式实现,具有参考意义
- JAVA日期时间小结
- java简单小结(附一个java实现的生产者消费者问题的程序)
- java日期转字符串 字符串转日期 日期转日历 日历转日期
- java日期转字符串 字符串转日期 日期转日历 日历转日期
- java.util.ResourceBundle简单小结
- 整理:不得不说的~关于Java时间日期小结
- 我的组件库--java Date Picker 日历 日期选择器
- Java中日期时间处理小结
- java中关于日期和时间的类的简单用法
- JAVA日期时间小结
- java日期时间小结
- java日期时间小结
- Java中日期的简单处理
- java 简单日历
- Oracle Java 日期问题小结
- JAVA日期时间小结
- java简单日历
- Java日期小结
- Java控制台打印简单日历