Date类概述和构造方法:
package Date;
/*
Date类概述和构造方法
Date代表了一个特定的时间,精确到毫秒
方法名 public Date()
分配一个Date对象,并初始化,以便它代表被分配的时间
方法名 public Date(long date)
分配一个Date对象,并初始化为表示从标准基准时间起指定的毫秒数
*/
import java.util.Date;
public class DateDemo1 {
public static void main(String[] args) {
//方法名 public Date()
Date d1 = new Date();//导包
System.out.println(d1);
long date=1000*60*60;
Date d2 = new Date(date);
System.out.println(d2);
}
}
第一个结果是当前时间!
Date类的常用方法:
package Date;
import java.util.Date;
/*
Date类的常用方法
public long getTime()
获取的是日期对象从1970年1月1日,00:00:00到现在的毫秒值
public void setTime(long time)
设置时间,给的是毫秒值
*/
public class DateDemo2 {
public static void main(String[] args) {
//创建日期对象
//public long getTime()
Date d1 = new Date();
d1.getTime();
System.out.println(d1.getTime());
System.out.println(d1.getTime()*1.0/1000/60/60/24/365+"年");
Date d2 = new Date();
long time=System.currentTimeMillis();
d2.setTime(time);
System.out.println(d2);
}
}
第三个结果是当前时间!
SimpleDateFormat的构造方法与格式化:
package Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
SimpleDateFormat的构造方法:
public SimpleDateFormat()
构造一个SimpleDateFormat,使用默认模式和日期格式
public SimpleDateFormat(String pattern)
构造一个SimpleDateFormat,使用给定的模式和默认的日期格式
格式化:
从Date到String:
public final String format(Date date)
将日期格式化成字符串
从String到Date:
public Date parse (String source)
从给定字符串开始解析文本以生成日期
*/
public class SimpleDateFormatDemo {
public static void main(String[] args) throws ParseException {
//格式化:从 Date 到String
Date d=new Date();
//第一种形式
SimpleDateFormat sdf=new SimpleDateFormat();
String s1=sdf.format(d);
System.out.println(s1);
//第二种形式
SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s2=sdf2.format(d);
System.out.println(s2);
System.out.println("---------");
String s3="2030-01-01 11:11:11";
SimpleDateFormat sdf3=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d2=sdf3.parse(s3);
System.out.println(d2);
}
}
案例日期工具类:
package Date.案例日期工具类;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateUtils {
public static String dateToString(Date date, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
String s=sdf.format(date);
return s;
}
public static Date stringToDate(String s, String format) throws ParseException {
//这里是抛出异常先不用管,后续会讲
SimpleDateFormat sdf = new SimpleDateFormat(format);
Date d = sdf.parse(s);
return d;
}
}
package Date.案例日期工具类;
import java.text.ParseException;
import java.util.Date;
public class DateDemo {
public static void main(String[] args) throws ParseException {
//创建日期对象
Date d = new Date();
String s1=DateUtils.dateToString(d,"yyyy年MM月dd日 HH:mm:ss");
System.out.println(s1);
String s2="2030-01-01 12:10:15";
Date d2=DateUtils.stringToDate(s2,"yyyy-MM-dd HH:mm:ss");
System.out.println(d2);
}
}
Calendar:
package Date;
import java.util.Calendar;
/*
Calendar为某一时刻和一组日历字段之间的转换提供了一些方法,
并为操作日历字段提供了一些方法
getlnstance用于获取Calendar对象,其日历字段已使用当前日期和时间初始化
Calendar rightNow=Calendar.getlnstance();
public int get(int field) 返回给定日历字段的值。
public abstract void add(int field,int amount) 根据日历的规则,将指定的时间量添加或减去给定的日历字段
public final void set(int year,int month,int date)设置当前日历的年月日
*/
public class CalendarDemo {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
//public int get(int field) 返回给定日历字段的值。
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH)+1;//月是从0计起
int date = c.get(Calendar.DATE);
System.out.println(year+"年"+month+"月"+date+"日");
//public abstract void add(int field,int amount) 根据日历的规则,将指定的时间量添加或减去给定的日历字段
// 10年后的5天前
c.add(Calendar.YEAR,10);
c.add(Calendar.DATE,-5);
int year2 = c.get(Calendar.YEAR);
int month2 = c.get(Calendar.MONTH)+1;//月是从0计起
int date2= c.get(Calendar.DATE);
System.out.println(year2+"年"+month2+"月"+date2+"日");
//public final void set(int year,int month,int date)设置当前日历的年月日
c.set(2030,11,11);
int year3 = c.get(Calendar.YEAR);
int month3 = c.get(Calendar.MONTH)+1;//月是从0计起
int date3 = c.get(Calendar.DATE);
System.out.println(year3+"年"+month3+"月"+date3+"日");
}
}
案例二月天:
package Date.案例二月天;
import java.util.Calendar;
import java.util.Scanner;
/*
需求:获取任意一年的二月有多少天
*/
public class CalendarText {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入年份:");
int year=sc.nextInt();
//设置日历对象的年月日
Calendar c=Calendar.getInstance();
c.set(year,2,1);
//3月1往前推一天,就是2月的最后一天
c.add(Calendar.DATE,-1);
//获取这一天输出
int date = c.get(Calendar.DATE);
System.out.println(year+"年的2月份有"+date+"天");
}
}