import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class TimeTaskTest{
public static void main(String[] args){
SimpleDateFormat t1=new SimpleDateFormat("yyyy-mm-dd");//使用SimpeDateformat创建个时间格式对象
SimpleDateFormat t2=new SimpleDateFormat("yyyy年mm月dd日");//模式字符串
try {
Date d = t1.parse("2017-8-8");//parse把字符串日期转换成date类型
System.out.println(t2.format(d));//d可能出现异常,因此包含d这个表达式写在try里面,impleDateFormat类的对象t2使用format方法转换时间格式fromat英文单词就是格式的意思
} catch (ParseException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
Calendar c=Calendar.getInstance();
System.out.println(c.get(Calendar.YEAR)+"年"+c.get(c.MONTH)+"月"+c.get(c.DATE)+"日"+c.get(c.HOUR)+"时"+c.get(c.MINUTE)+"分"+c.get(c.SECOND)+"秒");
c.add(c.DAY_OF_YEAR, 315);//c.ADY_OF_YEAR对象的属性
System.out.println(c.get(Calendar.YEAR)+"年"+c.get(c.MONTH)+"月"+c.get(c.DATE)+"日"+c.get(c.HOUR)+"时"+c.get(c.MINUTE)+"分"+c.get(c.SECOND)+"秒");
class MyTask extends TimerTask{//不随基类线程启动而启动,TimerTask时间任务是一个实现了runnale接口的类,用自己的MyTask继承这个类,写上自己的线程运行程序
private Timer tm;
public MyTask(Timer tm){
this.tm=tm;
}
public void run(){
try {
Runtime.getRuntime().exec("calc.exe");
} catch (Exception e) {
// TODO: handle exception
}
tm.cancel();//cancel()结束线程,所以这个函数必须写在线程代码里面
}
}
Timer tm=new Timer();//创建一个Timer类型的对象tm,tm是个timer类对象,具备cancel方法可以结束线程
tm.schedule(new MyTask(tm),5000);//Schedule日程安排,执行了程序后需要结束,但是它不结束,所以需要单独弄过线程来执行。Timer对象tm的schedule日程安排程序来启动MyTsak,将tm对象作为参数传进去,主要就是为了能正常结束一个线程
}
}
注意调用的包:
import java.util.Timer;
import java.util.TimerTask;
和结束线程的cancel()方法要写在run里面。