1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 分别对时分秒加减的java_Java中关于获取时间(日期)的总结大全

分别对时分秒加减的java_Java中关于获取时间(日期)的总结大全

时间:2023-09-27 09:39:50

相关推荐

分别对时分秒加减的java_Java中关于获取时间(日期)的总结大全

文章目录

1.相关类

1.1 java.util.Date

1.2 java.text.DateFormat(抽象类)

1.3 java.text.SimpleDateFormat(DateFormat的直接子类)

1.4 java.util.Calendar(抽象类)

2.示例

2.1 日期取值

2.1.1 获取当前系统时间(毫秒数)

2.2 日期转换

2.2.1 日期转字符串、字符串转日期

2.2.2 将日期转换成中文年月日时分秒

2.2.3 将指定日期转换成带周的格式

2.2.4 获取当前时间显示,上午,下午

2.2.5 时间秒转化为多少天小时分秒

在开发过程中,少不了与时间打交道,比如根据两个日期得出相差的时分秒,时间加减,时间累加,前5分钟,前一个月,前一年,等等…

在JAVA中有六个与时间有关的类:

java.util.Date

java.sql.Date

java.sql.Time

java.sql.Timestamp

java.text.SimpleDateFormat

java.util.Calendar

常用的也就是下面的几个:

Date: getTime() setTime()

Calendar: getInstance() getDateInstance() getDateTimeInstance() getTimeInstance()

DateFormat: getInstance() getDateInstance() getDateTimeInstance() getTimeInstance()

SimpleDateFormate: Formate(Date) parse(String s)

1.相关类

下面分别对他们介绍下:

1.1 java.util.Date

java.util.Date 是java.sqlDate,Time,Timestamp的父类,Java中的时间使用标准类库的java.util.Date,其表示特定的瞬间,精确到毫秒。是用距离一个固定时间点的毫秒数(可正可负,long类型)表达一个特定的时间点。从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和分析日期字符串。因为Date的设计具有"千年虫"以及"时区"的问题,所以Date中的大部分方法已经不建议使用了,它们都被java.util.Calendar类所取代

1.2 java.text.DateFormat(抽象类)

DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并分析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(日期 -> 文本)、分析(文本-> 日期)和标准化。将日期表示为 Date 对象,或者表示为从 GMT(格林尼治标准时间)1970 年1 月 1 日 00:00:00 这一刻开始的毫秒数。不过DateFormat的格式化Date的功能有限,没有SimpleDateFormat强大;但DateFormat是SimpleDateFormat的父类。

1.3 java.text.SimpleDateFormat(DateFormat的直接子类)

SimpleDateFormat 是一个以与语言环境相关的方式来格式化和分析日期的具体类。

SimpleDateFormat 使得可以选择任何用户定义的日期-时间格式的模式。但是,仍然建议通过 DateFormat 中的 getTimeInstance、getDateInstance 或 getDateTimeInstance 来新的创建日期-时间格式化程序。

日期格式字符串如下:

字符

含义

示例

y

yyyy—

M

MM—03月

d

dd—06日

E

星期

E—星期日

a

上下午

a—上午(am)/下午(pm)

H

小时(24小时制)

HH:mm:ss—22:57:10

h

12小时制

hh:mm:ss—10:57:10

m

HH:mm:ss—22:57:10

s

HH:mm:ss—22:57:10

常见的转换有两种:

将Date格式化为String:String format(Date d)

将String解析为Date:Date parse(String s)

1.4 java.util.Calendar(抽象类)

java.util.Calendar 类用于封装日历信息,其主要作用在于其方法可以对时间分量进行运算。

Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

与其他语言环境敏感类一样,Calendar 提供了一个类方法 getInstance,以获得此类型的一个通用的对象。Calendar 的 getInstance 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化。

2.示例

大概可以分为以下五大类:

2.1 日期取值

2.1.1 获取当前系统时间(毫秒数)

public void getNowDate(){

//方式一

Date date = new Date();

System.err.println(date.getTime());

//方式二

System.err.println(System.currentTimeMillis());

//转换成指定的格式

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String current = sdf.format(System.currentTimeMillis());

System.err.println(current);

}

1583509366861

1583509366861

-03-06 23:42:46

2.2 日期转换

2.2.1 日期转字符串、字符串转日期

public void stringOrDateChange(){

try {

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

//1、日期转字符串

Calendar calendar = Calendar.getInstance();

Date date = calendar.getTime();

String dateStringParse = sdf.format(date);

System.err.println(dateStringParse);

//2、字符串转日期

String dateString = "-03-06 23:36:47";

Date dateParse = sdf.parse(dateString);

System.err.println(dateParse);

} catch (ParseException e) {

e.printStackTrace();

}

}

-03-06 23:43:40

Fri Mar 06 23:36:47 CST

注意:

创建 SimpleDateFormat 对象时必须指定转换格式。

转换格式区分大小写,yyyy 代表年份,MM 代表月份,dd 代表日期,HH 代表 24 进制的小时,hh 代表 12 进制的小时,mm 代表分钟,ss 代表秒。

2.2.2 将日期转换成中文年月日时分秒

public void dateToChinese(){

SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");

Date date = new Date();

String dateStr = sdf.format(date);

System.err.println(dateStr);

}

03月06日 23时55分46秒

2.2.3 将指定日期转换成带周的格式

public void dateToWeek(){

try {

DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Date d1 = df.parse("-03-06 23:43:40");

//指定日期

Calendar cal = df.getCalendar();

//当前时间

Calendar cas = Calendar.getInstance();

int year = cal.get(Calendar.YEAR);//获取年份

int month=cal.get(Calendar.MONTH);//获取月份

int day=cal.get(Calendar.DATE);//获取日

int hour=cal.get(Calendar.HOUR);//小时

int minute=cal.get(Calendar.MINUTE);//分

int second=cal.get(Calendar.SECOND);//秒

int WeekOfYear = cal.get(Calendar.DAY_OF_WEEK);//一周的第几天

System.out.println("现在的时间是:公元"+year+"年"+month+"月"+day+"日 "+hour+"时"+minute+"分"+second+"秒 星期"+WeekOfYear);

} catch (ParseException e) {

e.printStackTrace();

}

}

现在的时间是:公元2月6日 11时43分40秒 星期6

2.2.4 获取当前时间显示,上午,下午

public void getAmAndPm(){

Date date = new Date();

DateFormat df1 = DateFormat.getDateInstance();//日期格式,精确到日

System.out.println(df1.format(date));

DateFormat df2 = DateFormat.getDateTimeInstance();//可以精确到时分秒

System.out.println(df2.format(date));

DateFormat df3 = DateFormat.getTimeInstance();//只显示出时分秒

System.out.println("只显示出时分秒:"+df3.format(date));

DateFormat df4 = DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL); //显示日期,周,上下午,时间(精确到秒)

System.out.println("显示日期,周,上下午,时间(精确到秒):"+df4.format(date));

DateFormat df5 = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG); //显示日期,上下午,时间(精确到秒)

System.out.println("显示日期,上下午,时间(精确到秒):"+df5.format(date));

DateFormat df6 = DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT); //显示日期,上下午,时间(精确到分)

System.out.println("显示日期,上下午,时间(精确到分):"+df6.format(date));

DateFormat df7 = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM); //显示日期,时间(精确到分)

System.out.println("显示日期,时间(精确到分):"+df7.format(date));

}

-3-7

-3-7 0:18:28

只显示出时分秒:0:18:28

显示日期,周,上下午,时间(精确到秒):3月7日 星期六 上午12时18分28秒 CST

显示日期,上下午,时间(精确到秒):3月7日 上午12时18分28秒

显示日期,上下午,时间(精确到分):20-3-7 上午12:18

显示日期,时间(精确到分):-3-7 0:18:28

2.2.5 时间秒转化为多少天小时分秒

public void formatSeconds(){

long seconds = 100000000L;

String timeStr = seconds + "秒";

if(seconds > 60){

long second = seconds % 60;

long min = seconds / 60;

timeStr = min + "分" + second + "秒";

if(min > 60){

min = (seconds / 60) % 60;

long hour = (seconds / 60) / 60;

timeStr = hour + "小时" + min + "分" + second + "秒";

if(hour>24){

hour = ((seconds / 60) / 60) % 24;

long day = (((seconds / 60) / 60) / 24);

timeStr = day + "天" + hour + "小时" + min + "分" + second + "秒";

}

}

}

System.err.println(timeStr);

}

1157天9小时46分40秒

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。