版权声明:本文为博主原创文章,未经博主允许不得转载,转载请务必注明出处: 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