Java 日期时间
java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。
第一个构造函数使用当前日期和时间来初始化对象。
Date( )
第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。
Date(long millisec)
获取当前日期时间
Java中获取当前日期和时间很简单,使用 Date 对象的 toString() 方法来打印当前日期和时间,如下所示:
import java.util.Date;
public class DateDemo {
public static void main(String args[]) {
// 初始化 Date 对象
Date date = new Date();
// 使用 toString() 函数显示日期时间
System.out.println(date.toString());
}
}
日期比较
Java使用以下三种方法来比较两个日期:
使用 getTime() 方法获取两个日期(自1970年1月1日经历的毫秒数值),然后比较这两个值。
使用方法 before(),after() 和 equals()。例如,一个月的12号比18号早,则 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。
使用 compareTo() 方法,它是由 Comparable 接口定义的,Date 类实现了这个接口。
使用 SimpleDateFormat 格式化日期
SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类。SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行。例如:
import java.util.*;
import java.text.*;
public class DateDemo {
public static void main(String args[]) {
Date dNow = new Date( );
SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");
System.out.println("当前时间为: " + ft.format(dNow));
}
}
这一行代码确立了转换的格式,其中 yyyy 是完整的公元年,MM 是月份,dd 是日期,HH:mm:ss 是时、分、秒。
注意:有的格式大写,有的格式小写,例如 MM 是月份,mm 是分;HH 是 24 小时制,而 hh 是 12 小时制。
Calender
public class Calender_class {
public static void main(String[] args) {
// TODO 自动生成的方法存根
//获取年月日时分秒
Calendar cal = Calendar.getInstance();
// YEAR : 2019
int year = cal.get(Calendar.YEAR);
// MONTH: 从0开始计数, 范围 0,1,2,..., 11
int month = cal.get(Calendar.MONTH);
// DAY_OF_MONTH: 本月第几天, 范围 1,2,3,...,31
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
// HOUR_OF_DAY : 小时,24小时制, 范围 0,1,2,...,23
int hour = cal.get(Calendar.HOUR_OF_DAY);
// MINUTE : 分钟 , 范围 0,1,2,...,59
int minute = cal.get(Calendar.MINUTE);
// SECOND : 秒值 , 范围 0,1,2,...,59
int second = cal.get(Calendar.SECOND);
// DAY_OF_WEEK: 本周第几天, 范围1,2,...,7 ,星期日为1
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
// DAY_OF_YEAR: 当年第几天, 范围1,2,...,366
int dayOfYear = cal.get(Calendar.DAY_OF_YEAR);
System.out.println("Now time:"+year+"年"+(month+1)+"月"+dayOfMonth+"日"+(hour)+"时"+minute+"分"+second+"秒");
//设置
//Calendar cal = Calendar.getInstance();
// 设置年月日 '2020-6-7' ,注意月份从0计数
cal.set(2020, 5, 7);
// 设置年月日时分秒 '2020-6-7 20:15:48'
cal.set(2020, 5, 7, 20, 15, 48);
// 只设置年
cal.set(Calendar.YEAR, 2020);
// 只设置月,注意月份从0计数
cal.set(Calendar.MONTH, 5);
// 只设置日
cal.set(Calendar.DAY_OF_MONTH, 7);
// 只设置时
cal.set(Calendar.HOUR_OF_DAY, 20);
// 只设置分
cal.set(Calendar.MINUTE, 15);
// 只设置秒
cal.set(Calendar.SECOND, 48);
//往前往后推算
//Calendar cal = Calendar.getInstance();
// 前天
cal.add(Calendar.DAY_OF_MONTH, -2);
// 30天之后
cal.add(Calendar.DAY_OF_MONTH, 30);
//与时间long、Date转换
// Calendar -> Date, long
Date date = cal.getTime();
long timeValue = cal.getTimeInMillis();
// Date,long -> Calendar
cal.setTime(date);
cal.setTimeInMillis(timeValue);
//差值计算 先转换为毫秒 再计算
Calendar a = Calendar.getInstance();
a.set(2008, 0,1);
Calendar b = Calendar.getInstance();
b.set(2019, 5,19);
long timeValue1 = b.getTimeInMillis() - a.getTimeInMillis();
long days = timeValue1 / (1000 * 3600 * 24);
//计算节日
Calendar cal1 = Calendar.getInstance();
cal1.set(2020, Calendar.JUNE, 1); // 从2020-6-1起推算
int numWeek = 0;
for(int i=0; i<31; i++)
{
int dayOfWeek1 = cal1.get(Calendar.DAY_OF_WEEK);
if(dayOfWeek1 == Calendar.SUNDAY) // SUNDAY就是星期日,即数字1
{
numWeek ++;
if( numWeek == 3 ) // 第3个星期日
{
System.out.printf("2020年父亲节: 2020-6-%d \n", i+1);
break;
}
}
cal1.add(Calendar.DAY_OF_MONTH, 1);
}
}
}