您的位置:首页 > 编程语言 > Java开发

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 对象表示的毫秒数

/**
* 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);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: