【时间工具】整理下java时间换算专题
首先总结了一下日期转换基础,最常用的两个工具类Date与calender,转换方法如下:
package com.zzt.spider;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* 时间工具总结
* @author ZX
* @date 2018年4月20日
*
*/
public class TestTime {
public static void main(String[] args) {
//date 与calandar
try{
//首先是Date的格式化与反格式化。yyyy-MM-dd HH:mm:ss 分别对应 年-月-日 时:分:秒
//"HH:mm:ss"是24小时制的,"hh:mm:ss"是12小时制。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//日期的格式化转换
Date now = new Date();
String format = sdf.format(now);
System.out.println(format);//结果:2018-05-02 16:51:13
//
String time = "2018-05-02 16:51:13";
Date parse = sdf.parse(time);
System.out.println(format);//
//获取时间戳
Date date = new Date();
long time1 = date.getTime();//获取时间戳方法
//给日历设置date日期:
Date d= new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(d);
//给日历设置自定义日期:
Calendar calendar2 = Calendar.getInstance();
calendar2.set(Calendar.YEAR,2018);
calendar2.set(Calendar.MONTH,11);//月份是从0开始的,所以11代表十二月
calendar2.set(Calendar.DAY_OF_MONTH,20);//
//日历转date
Date calendar2Date = calendar2.getTime();
String calendar2String = sdf.format(calendar2Date);
System.out.println(">>>>>>>>>>"+calendar2String);//结果>>>>>>>>>>2018-12-20 17:20:12
//间隔日期:
Date date1 = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(date1);
cal.add(Calendar.DATE,1);
Date date2 = cal.getTime();
long leftTime = date2.getTime()-date1.getTime();
System.out.println("时间戳间隔"+leftTime);
//将时间戳间隔转换成时分秒,正在写。。
Long hh=leftTime/(1000*60*60);
Long mm=leftTime%(1000*60*60);
String betueenTime=hh+"小时"+mm+"分";
//倒计时:
}catch (Exception e){
}
}
}
工具类:计算间隔时分秒:
package com.zzt.spider;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* 时间工具总结
* @author ZX
* @date 2018年4月20日
*
*/
public class TestTime {
public static void main(String[] args) throws ParseException {
//测试
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String timeStr1="2018-04-01 12:30:10";
String timeStr2="2018-04-02 13:31:20";
Date date1 = sdf.parse(timeStr1);
Date date2 = sdf.parse(timeStr2);
String dateBetween = dateBetween(date1, date2);
System.out.println(dateBetween);
}
/**
*
* @param startDate 开始date
* @param endDate 结束date
* @return
*/
public static String dateBetween(Date startDate, Date endDate) {
java.util.Calendar calStart = java.util.Calendar.getInstance();
java.util.Calendar calEnd = java.util.Calendar.getInstance();
calStart.setTime(startDate);
calEnd.setTime(endDate);
long diffMill = calEnd.getTime().getTime() - calStart.getTime().getTime();
System.out.println("间隔的毫秒数:"+diffMill);
long rtn = 0;
return formatTime(diffMill);
}
/*
* 毫秒转化时分秒毫秒
*/
public static String formatTime(Long ms) {
Integer ss = 1000;
Integer mi = ss * 60;
Integer hh = mi * 60;
Integer dd = hh * 24;
Long day = ms / dd;
Long hour = (ms - day * dd) / hh;
Long minute = (ms - day * dd - hour * hh) / mi;
Long second = (ms - day * dd - hour * hh - minute * mi) / ss;
Long milliSecond = ms - day * dd - hour * hh - minute * mi - second * ss;
StringBuffer sb = new StringBuffer();
if(day > 0) {
sb.append(day+"天");
}
if(hour > 0) {
sb.append(hour+"小时");
}
if(minute > 0) {
sb.append(minute+"分");
}
if(second > 0) {
sb.append(second+"秒");
}
if(milliSecond > 0) {
sb.append(milliSecond+"毫秒");
}
return sb.toString();
}
public static Long dateDiff(Date sDate, Date eDate, int diffType) {
java.util.Calendar calst = java.util.Calendar.getInstance();
java.util.Calendar caled = java.util.Calendar.getInstance();
calst.setTime(sDate);
caled.setTime(eDate);
long diffMill = caled.getTime().getTime() - calst.getTime().getTime();
System.out.println("diffMill"+diffMill);
long rtn = 0;
switch (diffType) {
case Calendar.MILLISECOND:
rtn = diffMill;
break;
case Calendar.SECOND:
rtn = diffMill / 1000;
break;
case Calendar.MINUTE:
rtn = diffMill / 1000 / 60;
break;
case Calendar.HOUR:
rtn = diffMill / 1000 / 3600;
break;
case Calendar.DATE:
rtn = diffMill / 1000 / 60 / 60 / 24;
break;
case Calendar.MONTH:
rtn = diffMill / 1000 / 60 / 60 / 24 / 12;
break;
case Calendar.YEAR:
rtn = diffMill / 1000 / 60 / 60 / 24 / 365;
break;
}
return rtn;
}
}
获取某月第一天与最后一天:
/**
* 获得该月第一天
* @param year
* @param month
* @return
*/
public static String getFirstDayOfMonth(int year,int month){
Calendar cal = Calendar.getInstance();
//设置年份
cal.set(Calendar.YEAR,year);
//设置月份
cal.set(Calendar.MONTH, month-1);
//获取某月最小天数
int firstDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
//设置日历中月份的最小天数
cal.set(Calendar.DAY_OF_MONTH, firstDay);
//格式化日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String firstDayOfMonth = sdf.format(cal.getTime());
return firstDayOfMonth;
}
/**
* 获取某年某月的最后一天
* @param year
* @param month
* @return
*/
public static String getLatDayOfMonth(int year ,int month) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
//设置年份
/* cal.set(Calendar.YEAR,year);
//设置月份
cal.set(Calendar.MONTH, month-1);*/
//获取某月最大天数
// int lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
//设置日历中月份的最大天数
// cal.set(Calendar.DAY_OF_MONTH, lastDay);
//格式化日期
cal.set(year, month-1, 1);
cal.roll(Calendar.DATE, -1);
String lastDayOfMonth = sdf.format(cal.getTime());
return lastDayOfMonth;
}
【时间工具】整理下java时间换算专题的更多相关文章
- Java日期工具类,Java时间工具类,Java时间格式化
Java日期工具类,Java时间工具类,Java时间格式化 >>>>>>>>>>>>>>>>>&g ...
- Java 8——日期时间工具库(java.time)
一.前言 在介绍Java SE 8中新的日期时间库前,先了解下Java 8之前的日期时间工具的诟病. 在Java SE 8前,日期时间工具库在java.util包中,包括: java.util.Dat ...
- hutool的时间工具类
hutool的时间工具类 糊涂的时间工具类有很多使用方法,用到了这几个 日期向后偏移 String now = DateUtil.now(); Date date4= DateU ...
- 花了近十年的时间,整理出史上最全面Java面试题
1.String 是最基本的数据类型吗? 不是.Java中的基本数据类型只有8个:byte.short.int.long.float.double.char.boolean:除了基本类型(primit ...
- 超详细的Java时间工具类
package com.td.util; import java.sql.Timestamp; import java.text.ParseException; import java.text.Pa ...
- JAVA时间工具类,在维护的项目里的
package com.inspur.jobSchedule.util; import org.apache.commons.lang3.time.DateUtils; import org.apac ...
- 小记Java时间工具类
小记Java时间工具类 废话不多说,这里主要记录以下几个工具 两个时间只差(Data) 获取时间的格式 格式化时间 返回String 两个时间只差(String) 获取两个时间之间的日期.月份.年份 ...
- 一个好的Java时间工具类DateTime
此类的灵感来源于C# 虽然网上有什么date4j,但是jar太纠结了,先给出源码,可以继承到自己的util包中,作为一个资深程序员,我相信都有不少好的util工具类,我也希望经过此次分享,能带动技术大 ...
- java时间工具类
在项目中,很多地方需要根据时间获取相应的数据,将时间格式化,或者时间比较等相关操作.一个良好的工具类不仅可以减少代码冗余,还能促进业务处理,加快进度. /** * @author: lxw * @Da ...
随机推荐
- Qt、Qte与Qtopia(Qt嵌入式的发展历程)
Qt的授权是分为两条线,商业版和开源版.如果使用商业版的Qt,那么开发出的程序可以是私有的和商业的:如果使用的是开源版的Qt,由于其使用的是GPL协议,那么可发出的程序也必须是GPL的.不过自从qt ...
- C#常用多线程方法
1. Thread类 C#多线程编程中Thread类需要包含名称空间System.Threading. class Program { static void Main(string[] args) ...
- WPF“天狗食月”效果
原文:WPF"天狗食月"效果 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/yangyisen0713/article/deta ...
- C#同步SQL Server数据库Schema
C#同步SQL Server数据库Schema 1. 先写一个sql加工类: using System; using System.Collections.Generic; using System. ...
- ArcGIS Runtime SDK for WPF 初始化
安装包 管理nuget包 Esri.ArcGISRuntime.WPF 也许还需要 Esri.ArcGISRuntime.Hydrography Esri.ArcGISRuntime.LocalSer ...
- WPF- 模拟触发Touch Events
原文:WPF- 模拟触发Touch Events 基于API: [DllImport("User32.dll")] public static extern bool Initia ...
- WPF Binding的代码实现
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- 反编译 war 包成传统项目的方法
需求 项目老大让外包做了官网,不甚满意,想自己搞搞,遂叫我反编译他们发过来的 war 包. 方法 第一步:解压 war 包其实就是 zip 压缩包,用 zip 解压. 第二步:反编译 查看 war 包 ...
- JS 中click和onclick的区别
1.onclick是绑定事件,告诉浏览器在鼠标点击时候要做什么 2.click本身是方法,作用是触发onclick事件,只要执行了元素的click()方法,就会触发onclick事件
- C# 桌面软件开发-深入学习 [1]- AY-C#人爱学不学-aaronyang技术分享
原文:C# 桌面软件开发-深入学习 [1]- AY-C#人爱学不学-aaronyang技术分享 曾经我做office,不想依赖别人dll,就使用了 Type.GetTypeFromProgID 可以根 ...