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 小时制。

Java 时间全局处理 java时间方法_java

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);
				}

	}

}