java 的Date 日期相关操作
- String 与 Date互转
(1)基于SimpleDateFormat实现:package com.bky.df; import java.text.ParseException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date; public class DateLangUtils{
public static void main(String[] args) throws ParseException {
Date nowDate = new Date();
String formatString = "yyyy-MM-dd HH:mm:ss";
String dateString = "2018-12-02 16:33:15";
System.out.println(getString(nowDate, formatString));
System.out.println(getDate(dateString, formatString));
System.out.println(getDatePos(dateString, formatString));
} /**
* 使用SimpleDateFormat格式化Date
*
* @param date
* @param formatString
* @return
*/
public static String getString(Date date, String formatString) {
SimpleDateFormat formatter = new SimpleDateFormat(formatString);
return formatter.format(date);
} /**
* 使用SimpleDateFormat解析日期字符串
*
* @param dateString
* @param formatString
* @return
* @throws ParseException
*/
public static Date getDate(String dateString, String formatString) throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat(formatString);
return formatter.parse(dateString);
} /**
* 使用SimpleDateFormat解析日期字符串
*
* @param dateString
* @param formatString
* @return
*/
public static Date getDatePos(String dateString, String formatString) {
SimpleDateFormat formatter = new SimpleDateFormat(formatString);
return formatter.parse(dateString, new ParsePosition(0));
}
}(2)使用commons组件实现
import java.text.ParseException;
import java.util.Date; import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.commons.lang3.time.DateUtils; public static void main(String[] args) throws ParseException {
Date nowDate = new Date();
String formatString = "yyyy-MM-dd HH:mm:ss";
String dateString = "2018-12-02 16:33:15";
System.out.println(DateFormatUtils.format(nowDate, formatString));
System.out.println(DateUtils.parseDate(dateString, formatString));
} - 对日期的相关操作
基于Calendar实现Calendar cal = Calendar.getInstance();
// 设置Calendar时间(1.Date 2.longofmills)
cal.setTime(new Date());
cal.setTimeInMillis(System.currentTimeMillis()); // 设置年月日,时分秒,毫秒
cal.set(Calendar.YEAR, cal.get(Calendar.YEAR));
// Calendar.MONTH 从0开始表示1月,需要转换展示/设置
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH));
cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH));
// 24小时制
cal.set(Calendar.HOUR_OF_DAY, cal.get(Calendar.HOUR_OF_DAY));
// 12小时制
cal.set(Calendar.HOUR, cal.get(Calendar.HOUR));
cal.set(Calendar.MINUTE, cal.get(Calendar.MINUTE));
cal.set(Calendar.SECOND, cal.get(Calendar.SECOND));
cal.set(Calendar.MILLISECOND, cal.get(Calendar.MILLISECOND)); // 设置与星期相关参数
// 设置当周星期周几(1为星期日,7为星期六)
cal.set(Calendar.DAY_OF_WEEK, cal.get(Calendar.DAY_OF_WEEK));
// 设置当月第几个星期(默认地区是从星期日开始算,以日历计算第几周)
cal.set(Calendar.WEEK_OF_MONTH, cal.get(Calendar.WEEK_OF_MONTH));
// 设置当月第几个星期(设置按当月的天数算第几周,7天一周)
cal.set(Calendar.DAY_OF_WEEK_IN_MONTH, cal.get(Calendar.DAY_OF_WEEK_IN_MONTH));
// 设置一年中第几个星期
cal.set(Calendar.WEEK_OF_YEAR, cal.get(Calendar.WEEK_OF_YEAR)); // 设置当月第一天
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0); // 设置当月最后一天
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0); - 计算两个时间之差
/**
* 根据需要计算并格式化两个时间之差
*
* @param beforeDate
* @param afterDate
* @param formatPatterns(长度一定要为6,如果不需要则传null)
* eg:new String[]{ "年", null, "天", "时", "分", "秒" }
* @return
*/
public static String formatDistanceDate(Date beforeDate, Date afterDate, String[] formatPatterns) {
if (formatPatterns == null || formatPatterns.length < 6)
return "";
long instance = (afterDate.getTime() - beforeDate.getTime()) / 1000;
StringBuilder dateInstanceFormatBuffer = new StringBuilder();
if (formatPatterns[0] != null) {
long year = instance / (3600l * 24 * 365);
if (year > 0) {
dateInstanceFormatBuffer.append(year);
dateInstanceFormatBuffer.append(formatPatterns[0]);
instance = instance % (3600l * 24 * 365);
}
}
if (formatPatterns[1] != null) {
long month = instance / (3600l * 24 * 30);
if (month > 0) {
instance = instance % (3600l * 24 * 30);
dateInstanceFormatBuffer.append(month);
dateInstanceFormatBuffer.append(formatPatterns[1]);
}
}
if (formatPatterns[2] != null) {
long day = instance / (3600l * 24);
if (day > 0) {
instance = instance % (3600l * 24);
dateInstanceFormatBuffer.append(day);
dateInstanceFormatBuffer.append(formatPatterns[2]);
}
}
if (formatPatterns[3] != null) {
long hour = instance / 3600;
if (hour > 0) {
instance = instance % 3600;
dateInstanceFormatBuffer.append(hour);
dateInstanceFormatBuffer.append(formatPatterns[3]);
}
}
if (formatPatterns[4] != null) {
long min = instance / 60;
if (min > 0) {
dateInstanceFormatBuffer.append(min);
dateInstanceFormatBuffer.append(formatPatterns[4]);
}
}
if (formatPatterns[5] != null) {
long second = instance % 60;
if (second > 0) {
dateInstanceFormatBuffer.append(second);
dateInstanceFormatBuffer.append(formatPatterns[5]);
}
}
return dateInstanceFormatBuffer.toString();
}
java 的Date 日期相关操作的更多相关文章
- Java基础 - Date的相关使用(获取系统当前时间)
前言: 在日常Java开发中,常常会使用到Date的相关操作,如:获取当前系统时间.获取当前时间戳.时间戳按指定格式转换成时间等.以前用到的时候,大部分是去网上找,但事后又很快忘记.现为方便自己今后查 ...
- Java中Date各种相关用法
Java中Date各种相关用法(一) 1.计算某一月份的最大天数 Java代码 Calendar time=Calendar.getInstance(); time.clear(); time.set ...
- java 线程 原子类相关操作演示样例 thinking in java4 文件夹21.3.4
java 线程 原子类相关操作演示样例 package org.rui.thread.volatiles; import java.util.Timer; import java.util.Time ...
- Java日期相关操作
1.获得日期 在旧版本 JDK 的时代,有不少代码中日期取值利用了 java.util.Date 类,但是由于 Date 类不便于实现国际化,其实从 JDK1.1 开始,就更推荐使用 java.uti ...
- Java 各种时间日期相关的操作
目录 1.获取当前时间的时间戳 1.1.时间进制 1.2.获取毫秒级时间戳 1.3.获取纳秒级时间戳 2.java.util包 2.1.Data 2.2.Calendar 3.java.time包 3 ...
- JAVA日期——java.util.date类的操作
package com.hxzy.time; import java.text.SimpleDateFormat;import java.util.Date; public class DateDem ...
- Java工具类——日期相关的类
前言 在日常的开发工作当中,我们经常需要用到日期相关的类(包括日期类已经处理日期的类),所以,我就专门整理了一篇关于日期相关的类,希望可以帮助到大家. 正文 一.日期类介绍 在 Java 里面,操作日 ...
- java创建Date日期时间笔记
(1)public Date() 创建的日期类对象的日期时间被设置成创建时刻相对应的日期时间. 例: Java代码 1.Date today=new Date(); //today被设置成创建时刻相 ...
- 数据结构Java实现04---树及其相关操作
首先什么是树结构? 树是一种描述非线性层次关系的数据结构,树是n个数据结点的集合,这些集结点包含一个根节点,根节点下有着互相不交叉的子集合,这些子集合便是根节点的子树. 树的特点 在一个树结构中,有且 ...
随机推荐
- ORB_SLAM2安装
进入工程目录,我们发现有两个sh文件,一个是build.sh另一个是build_ros.sh. 这两个都可以进行ORB_SLAM2的安装,我们先来看一下build.sh echo "Conf ...
- webservice接口和http接口介绍---更新版
web service(SOAP)与HTTP接口的区别什么是web service? soap请求是HTTP POST的一个专用版本,遵循一种特殊的xml消息格式Content-type设置为: te ...
- for循环比较
在实际的开发过程中,一般都会用到for循环,都可以用来遍历,但是这几个之间又存在细微的差别! 一,传统的for循环: var arr = ['good', 'good', 'study']; for ...
- CentOS官网下载系统镜像
https://jingyan.baidu.com/article/1876c85279cedd890a13766c.html
- Java基础知识学习思维导图
- 51Nod - 1433 0和5 找规律
小K手中有n张牌,每张牌上有一个一位数的数,这个字数不是0就是5.小K从这些牌在抽出任意张(不能抽0张),排成一行这样就组成了一个数.使得这个数尽可能大,而且可以被90整除. 注意: 1.这个数没有前 ...
- vue cli3.0配制axios代理
今天学习时,想访问网易新闻接口,结果显而易见,因为跨域被浏览器拒绝了. 去网上找一下结果一开始找到的是2.x版本的配置,生硬的放进去,给我各种报错.编译阶段就炸了.浪费好多时间 再按3.0版本去搜索才 ...
- cf549B Looksery Party 贪心
题目大意:有n个员工,每个员工通讯录里有自己的号码和其他一些员工的号码.现在有若干员工参加一个聚会,他们会给自己通讯录里所有的人发一条短信,包括自己.现在有个人预测了每个员工会收到多少条短信,而你要寻 ...
- 523. Continuous Subarray Sum
class Solution { public: bool checkSubarraySum(vector<int>& nums, int k) { unordered_map&l ...
- 3. Port scanners (端口扫描器 4个)
3. Port scanners (端口扫描器 4个) 愤怒的IP扫描器是一个小的开源Java应用程序,它执行主机发现(“ping扫描”)和端口扫描. 旧的2.x版本只有Windows,但是,新的3. ...