java日期时间_三行一叶的博客-程序员宅基地

技术标签: java基础  java  java-ee  eclipse  

1. Date类

java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。

构造器

date() :获取从1970/01/01开始的毫秒数

Date中的方法

Long getTime(): 获取时间戳(也就毫秒数)

int compareTo(Date date)

比较当调用此方法的Date对象和指定日期。两者相等时候返回0。调用对象在指定日期之前则返回负数。调用对象在指定日期之后则返回正数。

2.格式化

两种方式:使用printf格式化日期,使用SimpleDateFormat类

printf格式化日期

格式:以%t开头加上转换符。具体的转换符含义如下表:

转 换 符 说 明 示 例
c 包括全部日期和时间信息 星期六 十月 27 14:21:20 CST 2007
F "年-月-日"格式 2007-10-27
D "月/日/年"格式 10/27/07
r "HH:MM:SS PM"格式(12时制) 02:25:51 下午
T "HH:MM:SS"格式(24时制) 14:28:16
R "HH:MM"格式(24时制) 14:28

代码

 //日期对象使用printf格式化日期
 System.out.printf("现在的日期格式:%tF%n",date);
 System.out.printf("现在的日期格式:%tD%n",date);
 System.out.printf("现在的日期格式:%tr%n",date);
 System.out.printf("现在的日期格式:%tT%n",date);
 System.out.printf("现在的日期格式:%tR%n",date);

效果: 

SimpleDateFormat类

说明:SimpleDateFormat类是线程不安全的。SimpleDateFormat类是使用字符串来作为编码格式的。

在此模式中,所有的 ASCII 字母被保留为模式字母,定义如下:

字母 描述 示例
G 纪元标记 AD
y 四位年份 2001
M 月份 July or 07
d 一个月的日期 10
h A.M./P.M. (1~12)格式小时 12
H 一天中的小时 (0~23) 22
m 分钟数 30
s 秒数 55
S 毫秒数 234
E 星期几 Tuesday
D 一年中的日子 360
F 一个月中第几周的周几 2 (second Wed. in July)
w 一年中第几周 40
W 一个月中第几周 1
a A.M./P.M. 标记 PM
k 一天中的小时(1~24) 24
K A.M./P.M. (0~11)格式小时 10
z 时区 Eastern Standard Time
' 文字定界符 Delimiter
" 单引号 `

代码

 //日期对象的格式转换SimpleDateFormat格式化
 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
 String date1 = sdf.format(date);
 System.out.println(date1);
 ​
 //SimpleDateFormat的练习
 //日期转换格式联系
 SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
 SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM");
 String date2 = sdf1.format(date);
 String date3 = sdf2.format(date);
 System.out.println(date2);
 System.out.println(date3);

效果:

SimpleDateFormat类转成Date对象

代码

 //SimpleDateFormat 转成 date格式 注意:若格式为YYYY-MM-dd 转换是不对的,我把YYYY改成了yyyy
 String dateS = "2021-03-21 ";
 SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd");
 try {
     Date date4 = sdf3.parse(dateS);
     System.out.println(sdf3.format(date4));
 } catch (ParseException e) {
     e.printStackTrace();
 }
 ​
 String dates1 = "2021-08-20 10:45:60";
 SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
 try {
     Date date5 = sdf4.parse(dates1);
     System.out.println(sdf4.format(date5));
 } catch (ParseException e) {
     e.printStackTrace();
 }

效果

3.calendar类

calendar类可以获取时间特定的部分,比如小时,分钟,秒,还可以在日期上作加减。

注意:celendar类是一个抽象类。

通过代码来了解

 //date时间计算Calendar类基本使用
 //创建calendar类
 Calendar calendar = Calendar.getInstance();//这是获取当前的时间
 Date date5 = calendar.getTime(); //这是将calendar转成date
 System.out.println(date5);
 ​
 //创建calendar可以指定时间
 Calendar calendar1 = Calendar.getInstance();
 calendar1.set(2021,6-1,12);
 Date cDate = calendar1.getTime();
 SimpleDateFormat CSdf = new SimpleDateFormat("yyyy-MM-dd");
 System.out.println(CSdf.format(cDate));
 ​
 //使用set设置时间
 Calendar calendar2 = Calendar.getInstance();
 calendar2.set(2021,8-1,20);
 Date cDate1 = calendar2.getTime();
 SimpleDateFormat cSdf = new SimpleDateFormat("yyyy-MM-dd");
 System.out.println(cSdf.format(cDate1));
 ​
 //使用add设置
 Calendar calendar3 = Calendar.getInstance();
 calendar3.add(Calendar.DATE,10); //10的参数是表示在当前日期后十天的日期
 Date cDate2 = calendar3.getTime();
 SimpleDateFormat cSdf2 = new SimpleDateFormat("yyyy-MM-dd");
 System.out.println(cSdf2.format(cDate2));
 //使用add设置时间
 Calendar calendar4 = Calendar.getInstance();
 calendar4.add(Calendar.YEAR,2);
 Date cDate3 = calendar4.getTime();
 System.out.println(cDate3);
 ​
 //calendar类对象信息的获取
 Calendar calendar5 = Calendar.getInstance();
 int year = calendar5.get(Calendar.YEAR);
 int month = calendar5.get(Calendar.MONTH);
 int day = calendar5.get(Calendar.DATE);
 int hour = calendar5.get(Calendar.HOUR);
 int minute = calendar5.get(Calendar.MINUTE);
 int second = calendar5.get(Calendar.SECOND);
 System.out.println(year+" "+month+" "+day+" "+hour+" "+minute+" "+second);

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43172135/article/details/119295390

智能推荐

python3抓取php,在Python3中使用asyncio库进行快速数据抓取的教程_小猪佩琪168的博客-程序员宅基地

web数据抓取是一个经常在python的讨论中出现的主题。有很多方法可以用来进行web数据抓取,然而其中好像并没有一个最好的办法。有一些如scrapy这样十分成熟的框架,更多的则是像mechanize这样的轻量级库。DIY自己的解决方案同样十分流行:你可以使用requests、beautifulsoup或者pyquery来实现。方法如此多样的原因在于,数据“抓取”实际上包括很多问题:你不需要使用相...

Android ListView ClassCastException _Rlusia的博客-程序员宅基地_android classcastexception

前言8012年了,在Android开发中,还是避免不了使用 ListView,通过 addFooterView 去添加底部视图,UI刷新时,又通过 removeFooterView 去移除旧的视图,在Android 4.3版本及以下 removeFooterView 时,发生闪退,日志如下:com.company.adapters.MyAdapter cannot be cast to...

删除计算机安装的应用程序正确的操作是,如何把安装的电脑程序快速正确地卸载?..._陈历飞的博客-程序员宅基地

现在很多人都使用职能手机,平板电脑,上面的软件都能实现拖动快速卸载,那么电脑有没有快速的卸载方式呢? 答案是肯定的很多人会在桌面直接把软件的图标删除就以为把软件卸载了,其实并没有,知识删除了软件的快捷方式而已,要真正想快速卸载掉软件就得按一下步骤。操作步骤:1、打开您的电脑,找到桌面上“我的电脑”图标,双击打开“我的电脑”(或者在“我的电脑”上右击——“打开”)2、上述操作打开“我的电脑”后,出现...

java里面得时间转换_陈冲_河南漯河的博客-程序员宅基地

//时间戳转化为Sting或Date       SimpleDateFormat format =  newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");       Long time=newLong(445555555);       String d = format.format(time);       Date date=format.par...

VBA按区导出电脑字库区位码 _msdn_victory的博客-程序员宅基地

 It's easy: Sub getallquwei()Dim i As Byte, j As Byte, k As Byte, n As Integer, arr(1 To 1000, 1 To 10)n = 1For i = 16 To 87For j = 1 To IIf(i = 55, 89, 94)k = k + 1arr(n, k) = Chr("&H" & H...

LeetCode 542. 01 矩阵--反向BFS_Guapifang的博客-程序员宅基地

01 矩阵给定一个由 0 和 1 组成的矩阵 mat ,请输出一个大小相同的矩阵,其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。两个相邻元素间的距离为 1 。示例 1:输入:mat = [[0,0,0],[0,1,0],[0,0,0]]输出:[[0,0,0],[0,1,0],[0,0,0]]示例 2:输入:mat = [[0,0,0],[0,1,0],[1,1,1]]输出:[[0,0,0],[0,1,0],[1,2,1]]提示:m == mat.lengthn =.

随便推点

non-member function cannot have cv-qualifier_lovelytigerphd的博客-程序员宅基地

今天写c++程序是第一次遇见这个compilation error:non-member function cannot have cv-qualifier在网上research一番后找到stackoverflow上有个类似问题:templateinline unsigned int abs(const T& t) const{ return t>0?t

Basic Windbg - 1. SOSBasics(总结)_IRIS88888的博客-程序员宅基地

我们都知道,对于字符串相加,建议使用StringBuilder,而不是普通的string concat,为什么呢?我们通过dump简单看一下。先看这个代码:Code1usingSystem;2usingSystem.Collections.Generic;3usingSystem.Text;45namespaceSOSBasics26{...

Resnet网络理解_李嘉图123的博客-程序员宅基地

最近看了何凯明大神的Resnet写篇博客记录一下便于以后学习。Introduction近两年来,随着深度学习不断火热,人们发现网络的深度往往对模型的效果有着质的影响,网络越深模型的效果就会越好,这通常是由于随着网络的加深可以学习到更加高级的feature。但是,随着网络的加深也会伴随着一定的问题。第一个问题就是梯度消失以及梯度爆炸的问题,这个问题我们可以通过normalized initial...

php5.3 链接 sql2005 用 vc6还是vc9,PHP5.3+连接SQL Sever_不训的黑暗的博客-程序员宅基地

php5.2.x自带php_mssql.dll的扩展连接SQL Server,但这个扩展只能支持SQL Server 2000以下版本。php连接方式 mssql_connect('localhost', '用户名', '密码');php5.3.x不再支持php_mssql.dll扩展库PHP5.3+配置SQL Sever下载Microsoft Drivers for PHP for SQL Se...

LeetCode-77. 组合_边界流浪者的博客-程序员宅基地

给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]回溯算法:#include <iostream>#include <vector>using namespa...

清除任务栏右下角无效图标_yuanhubilie的博客-程序员宅基地

原文链接:http://blog.csdn.net/qscjob/article/details/16339417进程异常退出时,右下角会残留无效图标,只有鼠标移动上去的时候才会消失。在网上,找了一些方法。1.Shell_NotifyIcon 行不通。2.个人觉得模拟鼠标点击的方法不太靠谱,莫名其妙鼠标指针跑过去了。3.最后综合网上几种方法,下面这个模拟发送鼠标移动的方法还

推荐文章

热门文章

相关标签