1. System类
package cn.hncu_01;
/*
* System类
* System 类包含一些有用的类字段和方法。它不能被实例化。
*
* public static void gc():启动垃圾回收器
* public static void exit(int status):退出
* public static long currentTimeMillis():返回当前时间的毫秒值.
* 当前时间与协调世界时 1970 年 1 月 1 日午夜之间的时间差
* 一般用来测试代码的运行时间.
* public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length):
* 数组的复制
*/
public class Demo {
public static void main(String[] args) {
/*
* long curentTime = System.currentTimeMillis();
* System.out.println(curentTime);
*/
long sum = 0;
long start = System.currentTimeMillis();
for (int i = 0; i < 10000000; i++) {
sum += i;
}
long end = System.currentTimeMillis();
System.out.println("当前程序的运行时间是:" + (end-start));
}
}
2. Date类
构造方法
package cn.hncu_02;
import java.util.Date;
/*
* Date:类 Date 表示特定的瞬间,精确到毫秒。
*
* 构造方法:
* public Date():根据当前时间创建日期对象
* public Date(long date):根据给定的毫秒值创建日期对象.
*/
public class Demo {
public static void main(String[] args) {
Date date = new Date();
System.out.println(date);
//-----------------------
long d = 1000*60*60;//1小时
Date date2 = new Date(d);
System.out.println(date2);//Thu Jan 01 09:00:00 CST 1970
//我们在东8区
}
}
成员方法
package cn.hncu_02;
import java.util.Date;
/*
* public long getTime():获取时间,以毫秒为单位
* public void setTime(long time):设置日期
*/
public class Demo2 {
public static void main(String[] args) {
Date date = new Date();
/*long time = date.getTime();
System.out.println(time);*/
date.setTime(1000);
System.out.println(date);
}
}
3. DateFormat类
package cn.hncu_03;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
* DateFormat
* DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。
* 由于这个类是一个抽象类,所以我们用它的子类SimpleDateFormat
*
* 注意: 学习SimpleDateFormat,主要是学校日期的格式与解析
* 日期的格式化:Date-String
* 日子的解析:String - Date
*
* 构造方法:
* public SimpleDateFormat():无参构造
* public SimpleDateFormat(String pattern)
* 年:y
* 月:M
* 日:d
* 时:H
* 分:m
* 秒:s
*
* 成员方法:(重要)
* public final String format(Date date):格式日期
* public Date parse(String source):解析日期
*/
public class Demo {
public static void main(String[] args) throws ParseException {
/*SimpleDateFormat sdf = new SimpleDateFormat();
System.out.println(sdf);*/
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss ");
//System.out.println(sdf);
Date date = new Date();
System.out.println(date);
String time = sdf.format(date);
System.out.println(time);
Date date2 = sdf.parse(time);
System.out.println(date2);
}
}
练习:
算一下你来到这个世界多少天?
package cn.hncu_03;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
/*
* 算一下你来到这个世界多少天?
* 分析:
* (1) 键盘录入你的出身年月日
* (2) 把该字符串转成一个日期(日期的解析)
* (3) 通过该日期获取一个毫秒值
* (4) 获取当前时间的毫秒值
* (5) 把第(4)-(3转成天
* /1000/60/60/24
*/
public class Demo2 {
public static void main(String[] args) throws ParseException {
//(1) 键盘录入你的出身年月日
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的出身年月日:");
String line = sc.nextLine();
//(2) 把该字符串转成一个日期(日期的解析)
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(line);
//(3) 通过该日期获取一个毫秒值
long myTime = date.getTime();
//(4) 获取当前时间的毫秒值
long currentTime = System.currentTimeMillis();
//(5) 把第(4)-(3转成天
long day = (currentTime-myTime)/1000/60/60/24;
System.out.println("你来到这个世界:" + day +"天了");
}
}
4. Calendar
package cn.hncu_04;
import java.util.Calendar;
/*
* Calendar类
* Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段
* 之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
*
* public static Calendar getInstance():获取Calendar实例化对象
* public int get(int field):返回给定日历的字段值
* public void add(int field,int amount):对日历字段进行操作
* public final void set(int year,int month,int date):设置年月日
*/
public class Demo {
public static void main(String[] args) {
Calendar rightNow = Calendar.getInstance();
/*System.out.println(rightNow);
rightNow.set(2018, 8, 1);
int year = rightNow.get(Calendar.YEAR);
System.out.println(year);
//月份默认是从0开始的
int month = rightNow.get(Calendar.MONTH);
System.out.println(month+1);
int day = rightNow.get(Calendar.DATE);
System.out.println(day);*/
int year = rightNow.get(Calendar.YEAR);
int month = rightNow.get(Calendar.MONTH);
int day = rightNow.get(Calendar.DATE);
System.out.println("当前时间是:" + year + "年" + (month+1) + "月" + day + "日");
/*//三年前的今天
rightNow.add(Calendar.YEAR, -3);
year = rightNow.get(Calendar.YEAR);
month = rightNow.get(Calendar.MONTH);
day = rightNow.get(Calendar.DATE);
System.out.println("三年前的今天是:" + year + "年" + (month+1) + "月" + day + "日");*/
//5年后,10天前
rightNow.add(Calendar.YEAR, 5);
rightNow.add(Calendar.DATE, -10);
year = rightNow.get(Calendar.YEAR);
month = rightNow.get(Calendar.MONTH);
day = rightNow.get(Calendar.DATE);
System.out.println("5年后,10天前是:" + year + "年" + (month+1) + "月" + day + "日");
}
}
练习:
获取任意一年的二月有多少天?
package cn.hncu_04;
import java.util.Calendar;
import java.util.Scanner;
/*
* 获取任意一年的二月有多少天
*
* 分析:
* (1) 键盘录入任意年份
* (2) 设置日历对象的年月日
* 年:刚刚输入的值
* 月:2
* 日:1
* (3) 时间减1天,就是2月的最后一天
* (4) 输入这一天
*/
public class Demo2 {
public static void main(String[] args) {
//(1) 键盘录入任意年份
Scanner sc = new Scanner(System.in);
int year = sc.nextInt();
//设置日历对象的年月日
Calendar calendar = Calendar.getInstance();
calendar.set(year, 2, 1);
//时间减1天,就是2月的最后一天
calendar.add(calendar.DATE, -1);
//(4) 输入这一天
System.out.println(calendar.get(calendar.DATE));
}
}