分别对时分秒加减的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—2020年

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

2020-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 = "2020-03-06 23:36:47";

Date dateParse = sdf.parse(dateString);

System.err.println(dateParse);

} catch (ParseException e) {

e.printStackTrace();

}

}

2020-03-06 23:43:40

Fri Mar 06 23:36:47 CST 2020

注意:

创建 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);

}

2020年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("2020-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();

}

}

现在的时间是:公元2020年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));

}

2020-3-7

2020-3-7 0:18:28

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

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

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

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

显示日期,时间(精确到分):2020-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秒

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506120.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python仪表指针识别_一种指针式仪表的识别方法

一种指针式仪表的识别方法杨世杰,张平【摘要】当前指针式仪表识别技术日益成熟,其中指针形状和位置的识别大多采用Hough变换算法,传统的Hough变换算法运算时间长、储存空间大,使得识别过程效率低下。针对以上缺点,提出…

树莓派python编程读取电压_《树莓派Python编程指南》——3.2 在结构体中存储值-阿里云开发者社区...

本节书摘来自华章计算机《树莓派Python编程指南》一书中的第3章,第3.2节,作者:(美) Alex Bradbury Ben Everard更多章节内容可以访问云栖社区“华章计算机”公众号查看。3.2 在结构体中存储值除了简单数据类型,Python还允许我们将数据用不同…

java上传csv错误信息_java处理csv文件上传示例详解

前言:示例只是做了一个最最基础的上传csv的示例,如果要引用到代码中去,还需要根据自己的业务自行添加一些逻辑处理。ReadCsvUtil工具类package com.hanfengyeqiao.gjb.utils;import java.io.*;import java.util.*;/*** csv工具类*/public cla…

Java 数据库进度条_java进度条

练习JProgressBar结合Timer使用。代码如下:package luojing;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.Timer;import java.util.TimerTask;public class NewClass{static JProgressBar jpb null;static JButton jb null;…

暗金色 rgb_杜伽TAURUS K310樱桃RGB红轴体验:做工精良、手感优秀

前言DURGOD杜伽的机械键盘一直以简约的外形和优秀的手感而备受好评。笔者之前用过杜伽的K310、K320两个系列的多把键盘,对其非常熟悉,外形简约大方,手感、灯效也比较满意。正因如此,这次刚刚入手了一把杜伽K310 RGB樱桃红轴&#…

vim 显示行号_Vim给文件加行号,这通惊为天人的操作没sei了!文末天书慎点

引言一般 Vim 使用 :set number 命令,在编辑器显示行号。本文展示了如何将行号插入到正文中,或者只插入到段落中。此外,还提供了打印行号的选项(Vim 可以打印带有数字的行,并且不需要文件有数字)。Vim可以使用 :s 命令在每行之前插…

java 获取对象方法有哪些方法有哪些方法有哪些_Java中创建String 对象的方法有哪些...

Java中创建String 对象的方法有哪些发布时间:2020-11-25 16:45:30来源:亿速云阅读:71作者:Leah这篇文章将为大家详细讲解有关Java中创建String 对象的方法有哪些,文章内容质量较高,因此小编分享给大家做个参…

bvp解算器是什么_对数小史,以及为什么ln x的导数是1/x

为什么 lnx 求导是 1/x?​www.zhihu.com现代的数学体系——包括一般的高中和大学教学,一般都将“对数函数”定义为“指数函数”的反函数。不过,鲜为人知的是,在数学史上,“对数”这个概念反而比“指数”出现的更早&…

supermap iserver java 6r许可_SuperMap iserver Java 6R 在 linux 上安装和配置 | 学步园

一.安装JDK1.进入到放置JDK目录下输入命令:./jdk-6u14-linux-i586.bin 开始安装jdk ,安装的时候会让你输入yes(如果提示你权限不够的话 可以输入命令:chmod 755 jdk-6u14-linux-i586.bin 改变权限)2.配置java运行环境 这里我采用的是编写一个…

vb中怎么使图片适应框的大小_叮!VB考前练习了解一下?

1、Visual Basic窗体设计器的主要功能是(C )。A) 画图B) 编写源程序代码C) 建立用户界面D) 显示文字解析:Visual Basic窗体设计器简称窗体(Form),是应用程序最终面向用户的窗口,它对应于应用程序的运行结果。各种图形、图像、数据等都是…

苹果切换输入法_日语输入法哪个好

在初学日语的时候经常会遇到一些不认识的词,想查一下这个词是什么意思,应该怎么输入呢?尝试过许多软件之后,テツ为大家总结了一些认为比较好用的输入法百度IME输入法。下载安装后的切换非常简单,在右下角输入法处切换至JP日语即可…

开源社交系统java_JAVA 开源 SNS 社交系统 JEESNS V0.8 发布

JAVA 开源 SNS 社交系统 JEESNS V0.8 发布2017.02.17 JEESNS V0.8升级说明后台界面全新升级后台增加微博搜索功能增加了会员操作日志、会员动态微博、微博评论增加会员功能群组帖子增加置顶、精华功能限制微博输入内如字数、输入内容时字数统计微博增加Emoji表情增加微博、文章…

python 10个100以内随机整数编辑_你要偷偷的学Python,然后惊呆所有人(第五天) - python阿喵

标题无意冒犯,就是觉得这个广告挺好玩的前言前期回顾:你要偷偷学Python,然后惊呆所有人(第四天)在第四天的时候,我们接触了Python的模块调用,这也是Python能够火起来的一大优势。我们还实践了csv模块。不过冷静下来想想…

广义线性模型_广义线性模型(第六章补充)

上一篇文章(第六章)主要介绍了最大熵模型,并从中推导出逻辑斯谛回归,感觉意犹未尽。在复习了CS229 Lecture note之后,我决定重新整理思路:从广义线性模型的角度来看逻辑斯谛回归。最后,基于样本…

安卓开发怎么调用photopicker_谷歌出手整顿安卓应用程序乱象:无良权限的APP们再见了!...

相信你在使用安卓手机的时候一定有过这样的经历,在明确拒绝了软件调用电话、手机通讯录、短信等敏感内容的访问权后,APP表示无法继续运行然后强退。如果这款APP不具备可替代性,恐怕最终结果是,用户不得不选择妥协。关于应用程序度…

react router官方文档_阿里开源可插拔 React 跨端框架 UmiJS

点击上方“开发者技术前线”,选择“星标”18:30 在看 真爱作者:Tamic | 编辑: 可可阿里之前开源:阿里闲鱼开源 Flutter 应用框架 Fish Redux! 今天介绍的是前端React 框架- UmiJS。介绍umi官方宣称是一个…

java约瑟夫环迭代器_Josephus约瑟夫环问题的不同实现方法与总结

/************************************************************************//* Josephus问题——数组实现 *//************************************************************************/#include #include int Josephus(int t…

ios 下拉放大 上拉缩小_为啥鞠婧祎发量这么多?截图放大十倍她的“发缝”,网友:真密集...

​鞠婧祎,这位女明星真的是黑,红,黑,红。这不是秘密。鞠婧祎最近几天的确很受欢迎。甚至头发也受到质疑。一般而言,娱乐业的演艺人员由于多年来的工作时间安排不规则以及采取巴拉克拉法帽的行为,通常都有使…

python背景图片加载代码_2019.12.05-背景图片设置代码

css背景.box{width: 320px;height: 160px;border:5px solid #000;margin-bottom: 50px;background-color: gold;background-image: url(images/new.png);font-size: 40px;color: red;}.box2{width: 320px;height: 160px;border:5px solid #000;margin-bottom: 50px;background-…

苹果无线耳机使用方法_苹果官方:如果 AirPods Pro 出现这些问题,我们将免费更换!...

今年的 iPhone 12 系列并没有像往常一样附赠充电器、耳机,而受到同样待遇的还有 iPhone 11 系列,现在的 iPhone 11 系列不仅包装与 iPhone 12 系列一样变小了,而且同样也不再附赠充电器和耳机,但 iPhone 11 系列价格更低了。根据数…