Java核心类库 - 时间Date和Calendar
来源:互联网 发布:录制慢动作视频软件 编辑:程序博客网 时间:2024/05/21 16:55
时间日期
1)java中的时间类有:Date和Calendar
2)java中时间类的本质 long(毫秒数)
Date = long +历法算法(方法gerYear())
Calendar = long +历法算法(方法ger())
3) 时间的标准有两种
(1970)GMT long
(0)UTC long
4) java中基本的时间表示GMT long
5) java提供了Date类型表示时间和日期
Date 是long 类型的包装
6) Calendar 是历法的抽象
历法:公历,农历,太阳历
7) GregorianCalendar是历法的实现,采用公历的算法实现的
Calendar cal = Calendar.getInstance();
Calendar cal = new GregorianCalendar();//除了日本和泰国,效果等同于上一句
8) Date和 Calendar的默认值就是系统当前时间
一 java中表示时间的方式:
1) 格林威治时间(GMT):1970年1月1日 00:00:00(注:中国是东八区,所以要+8个小时)
也就是1970年1月1日 08:00:00
2 )公元元年(UTC): 0年
3 )目前java中3种日期表达方式long, Date , Calendar都在用
例子
import
java.util.Calendar;
import
java.util.Date;
import
java.util.GregorianCalendar;
public
class
LongDateDemo {
public
static
void
main(String[] args) {
long
now = System.currentTimeMillis();
long
year = now/
1000
/
60
/
60
/
24
/
365
+
1970
;
System.out.println(year);
//一年 地球绕太阳一圈(365天+1/4天)
//原点(公元元年)
/* date.getYear()是将date内部的long时间,根据历法计算
* 为年份,返回值是2位数年份,如:1997年返回97,但是过了
* 2K年,返回3位数年份,如2012返回112
*/
//老板本
Date date =
new
Date();
//默认是当前时间(long)
int
y = date.getYear()+
1900
;
int
month = date.getMonth()+
1
;
System.out.println(y+
"年"
+month+
"月"
);
//新版本
//Calendar 历法
Calendar cal =
new
GregorianCalendar();
//默认是当前时间(long)
y = cal.get(Calendar.YEAR);
//2012
month = cal.get(Calendar.MONTH)+
1
;
//4
System.out.println(y+
"年"
+month+
"月"
);
}
}
long --->Date : dat = new Date(l)
dat.setTime(l)
Date --->Calendar : cal.setTime(dat)
Calendar ---> Date: cal.getTime()
Date ---> long :dat.getTime()
注:Date dat , long l ,Calendar cal
例子
<strong>
import
java.util.Calendar;
import
java.util.Date;
import
java.util.GregorianCalendar;
/**
* 时间的类型转换
*/
public
class
DateCaseDemo {
public
static
void
main(String[] args) {
long
gmt =
0
;
//格林威治时间 1970/01/01
Date date =
new
Date();
date.setTime(gmt);
//回到1970 元旦,相当于long -->Date
System.out.println(date.getYear()+
1900
);
//1970
Calendar cal =
new
GregorianCalendar();
//date --> cal
cal.setTime(date);
//将cal设置为date的时间,也是1970
System.out.println(cal.get(Calendar.YEAR));
//1970
//date 和 cal ,gmt 代表同一时刻
//加-1天,是在当前时间上加-1天,就是减少1天,就是减少1天的毫秒数(1000*60*60*24)
cal.add(Calendar.DAY_OF_YEAR,-
1
);
Date d = cal.getTime();
System.out.println(d);
//1969
long
l = d.getTime();
System.out.println(l);
//-86400000,因为是在原点以前的时间
}
}</strong>
三 时间的输入与输出
1) 日期输出的本质是将Date转换为格式化的String
2) 日期输入的本质是将格式化的 String转换为 Date
3) SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
构建SimpleDateFormat 一般提供日期的格式"yyyy-MM-dd"具体参看javadoc
如:"yyyy-MM-dd HH:mm:ss"
"yyyyMMdd"
"dd/MM/yy"
"MM/dd/yyyy"
常用方法
fmt.parse(String) 可以实现将(合法)字符串解析为日期类型,经常用于处理日期输入
fmt.format(Date) 可以把日期格式化为字符串用于输出处理
使用字符串String输出时间
Date ---> String:
DateFormat fmt = new SimpleDateFormat("HH:mm:ss");
fmt.format(date)
把字符串String时间转为Date时间(个是必须相同)
String --> Date :
DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
fmt.parse("1999-2-2")
注:java没有提供String直接转换为Calendar的API方法,但第三方提供的API有这种方法
如果Calendar需要转为String,必须先转换为Date
Calendar ----> Date :
Date dat = cal.getTime();
例子
<strong>
import
java.text.ParseException;
import
java.text.SimpleDateFormat;
import
java.util.Date;
public
class
DateIODemo {
public
static
void
main(String[] args)
throws
ParseException {
Date date =
new
Date();
//当前时间,当前毫秒数
//输出yyyy-MM-dd HH:mm:ss
SimpleDateFormat fmt =
new
SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss"
);
//将日期类型格式化为时间字符串
String str = fmt.format(date);
//日期格式化
System.out.println(str);
//2012-12-21 00:00:00
//解析日期字符串为日期类型对象
String day =
"2012-12-21"
;
SimpleDateFormat f =
new
SimpleDateFormat(
"yyyy-MM-dd"
);
Date d = f.parse(day);
//将日期字符串解析为毫秒数
long
l = d.getTime();
System.out.println(fmt.format(d));
String s =
new
SimpleDateFormat(
"yyyy-MM-dd"
).format(
new
Date());
System.out.println(s);
//2012-04-18
}
}</strong>
四 时间的计算
时间计算的问题
1) 本质是时间毫秒数的计算
2) 简单时间计算,直接计算毫秒数,如:3天以后,2小时等
3) 复杂时间计算,利用Calender类提供的历法算法实现
常用方法:
add() set()
Calendar 提供的方法本是上也是计算毫秒数,
例子
import
java.text.SimpleDateFormat;
import
java.util.Calendar;
import
java.util.Date;
import
java.util.GregorianCalendar;
public
class
DateCalDemo {
public
static
void
main(String[] args) {
//简单时间计算
long
l = System.currentTimeMillis();
//当前时间
l += 1000L*
60
*
60
*
24
*
3
;
//3天以后
SimpleDateFormat sdm =
new
SimpleDateFormat(
"yyyy-MM-dd"
);
String s = sdm.format(
new
Date(l));
System.out.println(s);
//复杂时间计算
Calendar cal =
new
GregorianCalendar();
cal.add(Calendar.YEAR,
2
);
//2年以后
cal.set(Calendar.MONTH,Calendar.JANUARY);
//设置月份为1月
System.out.println(sdm.format(cal.getTime()));
//2年以后的1月
}
}
例子
2
package
com.tarena.day16;
import
java.util.Calendar;
import
java.util.Date;
public
class
SpecialDateDemo {
public
static
void
main(String[] args) {
}
/**
* 计算商品的促销日期special Date,规则:商品过期前两周五促销
* @param creat
* @param months
* @return
*/
public
static
Date special(Date creat,
int
months){
Calendar cal = Calendar.getInstance();
cal.setTime(creat);
//生产日期
cal.add(Calendar.MONTH, months);
//过期日
cal.add(Calendar.WEEK_OF_YEAR, -
2
);
//回调2周
if
(cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY){
//如果是星期天
cal.add(Calendar.WEEK_OF_YEAR, -
1
);
//回调一周
cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
//调到本周的周五
}
return
cal.getTime();
}
}
- Java核心类库 - 时间Date和Calendar
- 【java中时间类Date和Calendar的使用】
- java日期时间操作 Date和Calendar
- java时间类 Date,DateFormat ,Calendar
- Java 时间类-Calendar、Date、LocalDate/LocalTime
- Java 时间类-Calendar、Date、LocalDate/LocalTime
- Java Date 和 Calendar
- Java Date 和 Calendar
- Java Date 和 Calendar
- Java Date 和 Calendar
- Java Date 和 Calendar
- Java Date 和 Calendar
- Java Date 和 Calendar
- Java Date 和 Calendar
- Java 时间--Date,SimpleDateFormat,Calendar
- Java中的时间格式化和时间计算的方法 date calendar类详解~~~perfect
- 获取时间Calendar、使用 Date 和 SimpleDateFormat 类表示时间
- 获取时间Calendar、使用 Date 和 SimpleDateFormat 类表示时间
- iOS 判断文件或文件夹大小(MB)
- MyBatis 和 ibatis的动态SQL语句配置符号,不兼容大于号、小于号等特殊符号问题
- css中float:right什么意思
- 季申:奇虎360儿童卫士
- 用Wireshark+小度WIFI抓手机app包
- Java核心类库 - 时间Date和Calendar
- php升级到5.4后,dedecms后台文本编辑器为空的问题
- AppLog4Services事件测试成功(2)
- IOS高级开发~Runtime(一)
- js判断是否是移动端浏览器还是pc端浏览器
- 使用python爬下了某网站的图片
- 青蛙爬井
- Android之Adapter用法总结
- IOS高级开发~Runtime(二)