Java学习手册:日期操作

版权声明:本文为博主原创文章,未经博主允许不得转载,转载请务必注明出处: https://blog.csdn.net/MaybeForever/article/details/89512591

一、Date类

java.util.Date类封装日期及时间信息

setTime()//设置时间
getTime(Long l)//获取时间
//Date其他方法几乎设置为过时,不建议使用。

二、SimpleDateFormat

java.text.SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的工具类。它允许进行格式化(日期→文本)、解析(文本→日期)和规范化。
构造方法如下:

SimpleDateFormat()
SimpleDateFormat(String pattern)
//通常创建SimpleDateFormat的时候需要传入一个字符串,该字符串就是日期格式字符串,这样它就可以按照该格式在Date与String之间相互转换了

(1)Date→String

String format(Data date)
//该方法会按照SimpleDateFormat创建时指定的日期格式来将这个Date表示的时间转换为字符串

示例如下:

//Date→String
Date now = new Date();
SimpleDateFormat  sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String str = sdf.format(now);

(2)String→Date

Date parse(String str)
//该方法可以将给定的字符串按照创建SimpleDateFormat时指定的日期格式进行解析,然后返回对应的Date对象。

示例如下(须抛出异常):

//String→Date
String str = "2015-5-20 12:00:00";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(str);//需抛出异常

附:日期模式匹配字符表

字符 含义 示例
y yyyy年→2019年;yy年→19年
M MM月→01月;M月→1月
d dd日→06日;d日→6日
E 星期 E→星期日(Sun)
a AM或PM a→下午(PM)
H 小时(24小时制) a h →下午12时
h 小时(12小时制) HH:mm:ss→12:46:33
m 分钟 hh(a):mm:ss→12(下午):47:48
s
S 毫秒

三、Calendar类

java.util.Calendar类用于封装日历信息,日历类,主要用于操作时间。
获取Calendar实例可以使用其提供的静态方法,默认创建出来的Calendar实例表示当前的系统时间。

Calendar calendar = Calendar.getInstance();

(1)Calendar→Date

void setTime(Data date)
//该方法会将当前Calendar表示的时间以Date形式返回

(2)Date→Calendar
可以使用当前Calendar表示给定的Date表示的时间

void setTime(Data date)
//Calendar设置一个时间,提供了统一的设置时间方式
//例:Calendar calendar = Calendar.getInstance();
//   date = calendar.setTime(date);

void set(int field, int value)
//该方法用于设置当前Calendar的时间中给定的时间分量以及对应的值
//例:Calendar calendar = Calendar.getInstance();
//   calendar.set(Calendar.DATE, 10)

int get(int field)
//获取给定的时间分量对应的值
//例:int year = calendar.get(Calendar.YEAR)

void add(int field, int value)
//对给定的时间分量累加给定值

getActualMaximum()
//获取某个时间分量所允许的最大值
//例(查看一年共多少天):int days = calendar.getActualMaximum(Calendar.DAY_OF_YEAR)

附:日期对应的时间分量

日期 时间分量
DATE 日中的天,俗称几号
DAY_OF_MONTH 月中的天,与DATE一直
DAY_OF_WEEK 周中的天,就是星期几
DAY_OF_YEAR 年中的第几天

四、Demo

package com.haobi;
/*
 * 输入生产日期和保质天数,计算促销日期
 */
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入生产日期(yyyy-MM-dd):");
		String dataStr = scanner.nextLine();
		System.out.println("请输入保质期(天数):");
		int days = scanner.nextInt();
		try {
			//String→Date
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Date date = sdf.parse(dataStr);
			//Date→Calendar
			Calendar calendar = Calendar.getInstance();
			calendar.setTime(date);
			//计算促销日
			calendar.add(Calendar.DAY_OF_YEAR, days);//保质期
			calendar.add(Calendar.DAY_OF_YEAR, -14);//提前14天
			calendar.add(Calendar.DAY_OF_WEEK, 4);//所在周的周三(每周从周天开始)
			//Calendar→Date
			date = calendar.getTime();
			//Date→String
			dataStr = sdf.format(date);
			System.out.println("促销日期为:"+dataStr);
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}
}
//程序输出结果如下:
请输入生产日期(yyyy-MM-dd):
2019-04-25
请输入保质期(天数):
30
促销日期为:2019-05-15

猜你喜欢

转载自blog.csdn.net/MaybeForever/article/details/89512591