JAVA API系列----日期和时间相关的类
2015-05-12 11:56
141 查看
常用日期、时间相关类:Date、DateFormat和Calendar
·Date()构造方法以当前的时间来初始化Date实例对象,但是Date类没有考虑到国际化的问题,于是出现了DateFormat类和Calendar 类。
·Calendar类:用于完成日期字段(年,月,日,小时,分,秒等)之间的相互操作。
--Calendar.add方法在某一日期的基础上增加若干时间(年,日,小时,或秒等)得到一个新的日期。
--Calendar.get方法用于获得日期对象中的字段值(如年月日,时分秒等)。
--Calendar.set方法用于修改日期对象中日期字段的值。
--Calendar.getInstance静态方法:Calendar类是一个抽象基类,需要通过Calendar.getInstance方法返回一个Calendar类型的子 类
·编程实例:计算出距当前日期时间315天后的日期时间,并用“xx年xx月xx日xx小时:xx分:xx秒”的格式输出。
[java] view
plaincopy
package com.TestCalendar;
import java.util.Calendar;
public class TestCalendar{
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Calendar cal = Calendar.getInstance();
System.out.println("Current time is"+cal.get(Calendar.YEAR)+"年"+(cal.get(cal.MONTH)+1)+"月"+
cal.get(cal.DAY_OF_MONTH)+"日"+cal.get(cal.HOUR_OF_DAY)+"时"+cal.get(cal.MINUTE)+"分"+cal.get(cal.SECOND)+"秒");
cal.add(Calendar.DAY_OF_YEAR, 2);
System.out.println("Current time is"+cal.get(Calendar.YEAR)+"年"+(cal.get(cal.MONTH)+1)+"月"+
cal.get(cal.DAY_OF_MONTH)+"日"+cal.get(cal.HOUR_OF_DAY)+"时"+cal.get(cal.MINUTE)+"分"+cal.get(cal.SECOND)+"秒");
}
}
·Date类
·java.text.DateFormat:可以将Date对象中的日期用指定的格式输出,或者将特定格式的日期字符串转换成Date实例对象。DateFormat 是一个抽象类,在完成具体任务时需要使用它的子类。
·java.text.SimpleDateFormat:是DateFormat的子类,用于把Date对象中的日期格式化为本地字符串,或者把时间字符串转换成Date对 象。
·编程实例:将“2002-03-15”格式的日期字符串转换成'2002年03月15日"的格式。
[java] view
plaincopy
package com.TestCalendar;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestCalendar{
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Date df = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
df=sdf.parse("2003-03-15");
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sdf.applyPattern("yyyy年MM月dd日");
System.out.println(sdf.format(df));
}
}
·Timer与TimerTask类
·schedule方法:Timer类的方法,指定多长时间以后启动一个任务线程执行一段代码,或者每个多长时间定期的调用一段代码。
--
--
--
--
务代码。
·TimerTask类实现了Runnable接口,要执行的任务由它里面实现的run方法来完成。要执行周期性的任务,TimerTask中的run方法要避 免执行for循环之类长时间执行的代码,否则就有可能被打断。
·Timer类默认为非Daemon线程,结束时间不确定,要结束它的执行,就要调用Timer类的cancel方法。
.所谓守护线程(Daemon线程)就是运行在程序后台的线程,程序的主线程Main(比方java程序一开始启动时创建的那个线程)不会是守护线程
2.Daemon thread在Java里面的定义是,如果虚拟机中只有Daemon thread 在运行,则虚拟机退出。
虚拟机中可能会同时有很多个线程在运行,只有当所有的非守护线程都结束的时候,虚拟机的进程才会结束,不管在运行的线程是不是main()线程。
3.Main主线程结束了(Non-daemon thread),如果此时正在运行的其他threads是daemon threads,JVM会使得这个threads停止,JVM也停下
如果此时正在运行的其他threads有Non-daemon threads,那么必须等所有的Non daemon线程结束了,JVM才会停下来
4.总之,必须等所有的Non-daemon线程都运行结束了,只剩下daemon的时候,JVM才会停下来,注意Main主程序是Non-daemon 线程
默认产生的线程全部是Non-daemon线程
·编程实例:程序启动运行后30秒启动Windows自带的计算器程序。
[java] view
plaincopy
package com.TestTimer;
import java.io.IOException;
import java.util.Timer;
import java.util.TimerTask;
class MyTimerTask extends TimerTask{
Timer timer = null;
MyTimerTask(Timer timer){//传递Timer对象
this.timer = timer;
}
@Override
public void run() {
// TODO Auto-generated method stub
try {
Runtime.getRuntime().exec("calc.exe");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
timer.cancel();//调用Timer类的cancel方法,结束timer的运行
}
}
public class TestTimer {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Timer timer = new Timer();
MyTimerTask mtt = new MyTimerTask(timer);
timer.schedule(mtt, 3000);//调用mtt的run方法
}
}
·Date()构造方法以当前的时间来初始化Date实例对象,但是Date类没有考虑到国际化的问题,于是出现了DateFormat类和Calendar 类。
·Calendar类:用于完成日期字段(年,月,日,小时,分,秒等)之间的相互操作。
--Calendar.add方法在某一日期的基础上增加若干时间(年,日,小时,或秒等)得到一个新的日期。
--Calendar.get方法用于获得日期对象中的字段值(如年月日,时分秒等)。
--Calendar.set方法用于修改日期对象中日期字段的值。
--Calendar.getInstance静态方法:Calendar类是一个抽象基类,需要通过Calendar.getInstance方法返回一个Calendar类型的子 类
GregorianCalendar的实例对象。
·编程实例:计算出距当前日期时间315天后的日期时间,并用“xx年xx月xx日xx小时:xx分:xx秒”的格式输出。
[java] view
plaincopy
package com.TestCalendar;
import java.util.Calendar;
public class TestCalendar{
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Calendar cal = Calendar.getInstance();
System.out.println("Current time is"+cal.get(Calendar.YEAR)+"年"+(cal.get(cal.MONTH)+1)+"月"+
cal.get(cal.DAY_OF_MONTH)+"日"+cal.get(cal.HOUR_OF_DAY)+"时"+cal.get(cal.MINUTE)+"分"+cal.get(cal.SECOND)+"秒");
cal.add(Calendar.DAY_OF_YEAR, 2);
System.out.println("Current time is"+cal.get(Calendar.YEAR)+"年"+(cal.get(cal.MONTH)+1)+"月"+
cal.get(cal.DAY_OF_MONTH)+"日"+cal.get(cal.HOUR_OF_DAY)+"时"+cal.get(cal.MINUTE)+"分"+cal.get(cal.SECOND)+"秒");
}
}
·Date类
·java.text.DateFormat:可以将Date对象中的日期用指定的格式输出,或者将特定格式的日期字符串转换成Date实例对象。DateFormat 是一个抽象类,在完成具体任务时需要使用它的子类。
·java.text.SimpleDateFormat:是DateFormat的子类,用于把Date对象中的日期格式化为本地字符串,或者把时间字符串转换成Date对 象。
·编程实例:将“2002-03-15”格式的日期字符串转换成'2002年03月15日"的格式。
[java] view
plaincopy
package com.TestCalendar;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestCalendar{
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Date df = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
df=sdf.parse("2003-03-15");
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sdf.applyPattern("yyyy年MM月dd日");
System.out.println(sdf.format(df));
}
}
·Timer与TimerTask类
·schedule方法:Timer类的方法,指定多长时间以后启动一个任务线程执行一段代码,或者每个多长时间定期的调用一段代码。
--
void
schedule(TimerTask task, long delay):在dalay时间长度之后执行TimerTask类对象中的任务代码。
--
void
schedule(TimerTask task, Date time):在time时间开始执行TimerTask中的任务代码。
--
void
schedule(TimerTask task, long delay, long period):在delay时间长度之后开始以period为周期执行TimerTask中的任务 代码。
--
void
schedule(TimerTask task, Date firstTime, long period):在firstTime时间以period为周期开始执行TimerTask中的任
务代码。
·TimerTask类实现了Runnable接口,要执行的任务由它里面实现的run方法来完成。要执行周期性的任务,TimerTask中的run方法要避 免执行for循环之类长时间执行的代码,否则就有可能被打断。
·Timer类默认为非Daemon线程,结束时间不确定,要结束它的执行,就要调用Timer类的cancel方法。
.所谓守护线程(Daemon线程)就是运行在程序后台的线程,程序的主线程Main(比方java程序一开始启动时创建的那个线程)不会是守护线程
2.Daemon thread在Java里面的定义是,如果虚拟机中只有Daemon thread 在运行,则虚拟机退出。
虚拟机中可能会同时有很多个线程在运行,只有当所有的非守护线程都结束的时候,虚拟机的进程才会结束,不管在运行的线程是不是main()线程。
3.Main主线程结束了(Non-daemon thread),如果此时正在运行的其他threads是daemon threads,JVM会使得这个threads停止,JVM也停下
如果此时正在运行的其他threads有Non-daemon threads,那么必须等所有的Non daemon线程结束了,JVM才会停下来
4.总之,必须等所有的Non-daemon线程都运行结束了,只剩下daemon的时候,JVM才会停下来,注意Main主程序是Non-daemon 线程
默认产生的线程全部是Non-daemon线程
·编程实例:程序启动运行后30秒启动Windows自带的计算器程序。
[java] view
plaincopy
package com.TestTimer;
import java.io.IOException;
import java.util.Timer;
import java.util.TimerTask;
class MyTimerTask extends TimerTask{
Timer timer = null;
MyTimerTask(Timer timer){//传递Timer对象
this.timer = timer;
}
@Override
public void run() {
// TODO Auto-generated method stub
try {
Runtime.getRuntime().exec("calc.exe");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
timer.cancel();//调用Timer类的cancel方法,结束timer的运行
}
}
public class TestTimer {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Timer timer = new Timer();
MyTimerTask mtt = new MyTimerTask(timer);
timer.schedule(mtt, 3000);//调用mtt的run方法
}
}
相关文章推荐
- JAVA API系列----日期和时间相关的类
- JAVA处理日期(Date)时间(Time)以及相关类的介绍
- c++时间转换与表示之03(与日期和时间相关的数据结构)
- 【Android 应用开发】Android - 时间 日期相关组件
- Python中的日期和时间相关知识
- StringBuffer,StringBuilder,日期时间相关类
- SQL Server日期时间相关详解
- JS获取时间的相关函数及时间戳与时间日期之间的转换
- MySQL 时间日期相关
- Python3 日期时间 相关模块(time(时间) / datatime(日期时间) / calendar(日历))
- JAVA面试题解惑系列(七)——日期和时间的处理
- U3D 日期时间相关
- JAVA菜鸟入门篇 - 时间处理相关类实例:打印该月日期表 (29)
- 时间日期相关工具类-获取星期,月份,时间戳转化等
- Java Date 日期 时间 相关方法
- 【Android 应用开发】Android - 时间 日期相关组件
- Android - 时间 日期相关组件
- Vim技能修炼教程(15) - 时间和日期相关函数
- mysql日期相关函数大全,日期,字符串,Unix时间戳...
- Python3 日期时间 相关模块(time(时间) / datatime(日期时间) / calendar(日历))