对java中常用的日期操作进行整理。

1、日期格式化

/*
* 日期格式化类(必须掌握)
* API:
* G Era 标志符 Text AD
y 年 Year 1996; 96
M 年中的月份 Month July; Jul; 07
w 年中的周数 Number 27
W 月份中的周数 Number 2
D 年中的天数 Number 189
d 月份中的天数 Number 10
F 月份中的星期 Number 2
E 星期中的天数 Text Tuesday; Tue
a Am/pm 标记 Text PM
H 一天中的小时数(0-23) Number 0
k 一天中的小时数(1-24) Number 24
K am/pm 中的小时数(0-11) Number 0
h am/pm 中的小时数(1-12) Number 12
m 小时中的分钟数 Number 30
s 分钟中的秒数 Number 55
S 毫秒数 Number 978
z 时区 General time zone Pacific Standard Time; PST; GMT-08:00
Z 时区 RFC 822 time zone -0800

*/

//日期转字符串,根据需要调整格式
@Test
public void DateToString(){
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = formatter.format(currentTime);
System.out.println(dateString);
} //字符串转日期
@Test
public void StrToDate() throws ParseException {
String dateStr = "2019-01-19";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
date = format.parse(dateStr);
System.out.println(date);
} //获取本月第一天
@Test
public void getMonthFirstDay() throws ParseException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal=Calendar.getInstance();//获取当前日期
cal.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天
String monthFirstDay = format.format(cal.getTime());
System.out.println(monthFirstDay);
} //获取本月最后一天
@Test
public void getMonthLastDay() throws ParseException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal=Calendar.getInstance();//获取当前日期
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
String monthLastDay = format.format(cal.getTime());
System.out.println(monthLastDay);
} //获取上个月第一天。最后一天同理
@Test
public void getLastMonthFirstDay() throws ParseException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal=Calendar.getInstance();//获取当前日期
cal.add(Calendar.MONTH, -1);
cal.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天
String monthFirstDay = format.format(cal.getTime());
System.out.println(monthFirstDay);
} //通过Calendar获取年月日时分秒
@Test
public void testCalendar() throws ParseException {
Calendar cal = Calendar.getInstance();
// 赋值时年月日时分秒常用的6个值,注意月份下标从0开始,所以取月份要+1
System.out.println("年:" + cal.get(Calendar.YEAR));
System.out.println("月:" + (cal.get(Calendar.MONTH) + 1));
System.out.println("日:" + cal.get(Calendar.DAY_OF_MONTH));
System.out.println("时:" + cal.get(Calendar.HOUR_OF_DAY));
System.out.println("分:" + cal.get(Calendar.MINUTE));
System.out.println("秒:" + cal.get(Calendar.SECOND));
} //得到两个时间相隔的天数
@Test
public void getBetweenDay() throws ParseException{
String dateStr1 = "2019-01-01";
String dateStr2 = "2019-01-19";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = format.parse(dateStr1);
Date date2 = format.parse(dateStr2);
Long inteverDay = (date2.getTime()-date1.getTime())/(1000*60*60*24);
System.out.println(inteverDay);
} //当前日期加一天
@Test
public void addCurrentDay() throws ParseException {
String datess = "2019-02-28";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date parse = format.parse(datess);
Calendar cal=Calendar.getInstance();//获取当前日期
cal.setTime(parse);
cal.add(Calendar.DAY_OF_YEAR, +1);
String monthFirstDay = format.format(cal.getTime());
System.out.println(monthFirstDay);
} //Calendar转换成date
@Test
public void CalToDate() throws ParseException {
Calendar cal=Calendar.getInstance();
Date date=cal.getTime();
} //date转换成Calendar
@Test
public void DateToCal() throws ParseException {
Calendar cal=Calendar.getInstance();
Date date = new Date();
cal.setTime(date);
} //获得当前周周一的日期
@Test
public void getMonday(){
Date date = new Date();
Calendar c = Calendar.getInstance();
c.setTime(date);
//monday可以替换成任意星期几
c.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
String dateStr = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
System.out.println(dateStr);
} //判断两个时间是否在同一周
public boolean isSameWeekDates(Date date1, Date date2) {
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.setTime(date1);
cal2.setTime(date2);
int subYear = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR);
if (0 == subYear) {
if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR)){
return true;
}
} else if (1 == subYear && 11 == cal2.get(Calendar.MONTH)) {
// 如果12月的最后一周横跨来年第一周的话则最后一周即算做来年的第一周
if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR)){
return true;
}
} else if (-1 == subYear && 11 == cal1.get(Calendar.MONTH)) {
if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR)){
return true;
}
}
return false;
}

Java常用日期操作的更多相关文章

  1. java常用日期类总结

    java 常用的日期类有三个Date.SimpleDateFormat.Calendar

  2. 菜鸡的Java笔记 日期操作类

    日期操作类        Date 类与 long 数据类型的转换        SimpleDateFormat 类的使用        Calendar 类的使用                如 ...

  3. java 常用时间操作类,计算到期提醒,N年后,N月后的日期

    package com.zjjerp.tool; import java.text.ParseException; import java.text.ParsePosition; import jav ...

  4. java 常用日期工具类的操作

    获取指定日期的时间戳 /* * 获取指定日期的时间戳 * */ public static long getMillis(String date_str){ try { SimpleDateForma ...

  5. Java常用文件操作-2

    上篇文章记录了常用的文件操作,这里记录下通过SSH服务器操作Linux服务器的指定路径下的文件. 这里用到了第三方jar包 jsch-0.1.53.jar, jsch-api 1.删除服务器上指定路径 ...

  6. java常用日期函数总结

    请记得要引入java.util.Date和java.text.SimpleDateFormat两个包 1.计算某一月份的最大天数 Calendar time=Calendar.getInstance( ...

  7. Java常用文件操作-1

    在我们的实际工作中经常会用到的文件操作,再此,将工作中碰到的做一个记录,以便日后查看. 1.复制文件夹到新文件夹下 /** * 复制文件夹下所有文件到指定路径 *@param oldPath *@pa ...

  8. java常用日期操作方法

    package com.wujiangpo.test.util; import java.text.ParseException; import java.text.SimpleDateFormat; ...

  9. java常用日期类型转换

    import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormat; import j ...

随机推荐

  1. TCP/IP 笔记 - TCP保活机制

    TCP协议中不存在轮询机制,这意味着加入启动一个客户端进程,与服务器建立连接后,然后离开几小时.几天.甚至几个月,连接依然会保持着.理论上,中间路由器可以崩溃和重启,数据线可以断开再连接,只要连接两端 ...

  2. DynamicProxy系列目录

    C# 1.基于Emit实现动态代理 2.Microsoft.CodeAnalysis动态生成代理类 3.castle dynamicproxy + AutoFac 4.DispatchProxy .R ...

  3. shiro源码篇 - shiro认证与授权,你值得拥有

    前言 开心一刻 我和儿子有个共同的心愿,出国旅游.昨天儿子考试得了全班第一,我跟媳妇合计着带他出国见见世面,吃晚饭的时候,一家人开始了讨论这个.我:“儿子,你的心愿是什么?”,儿子:“吃汉堡包”,我: ...

  4. vmware-vcsa6.5 基本管理

    这章介绍的是创建数据中心集群等操作 一.创建数据中心 创建数据中心 添加主机 创建集群 #配置ntp,上一章已经配置 #许可证,上一章已经添加,这章就不介绍了 统一存储,方便后面的识别和管理 1.创建 ...

  5. C#爬虫----Fiddler 插件开发 自动生成代码

    哈喽^_^ 一般我们在编写网页爬虫的时候经常会使用到Fiddler这个工具来分析http包,而且通常并不是分析一个包就够了的,所以为了把更多的时间放在分析http包上,自动化生成封包代码就尤为重要了( ...

  6. Android Studio 活动的生命周期

    Activity 类中定义了7个回调方法,覆盖了活动的活动周期的每一环节 onCreate()  活动第一次创建的时候调用 onStart() 这个活动由不可见变为可见的时候调用 onResume() ...

  7. async,await,Task 的一些用法

    async,await,Task 的一些用法 private void Form1_Load(object sender, EventArgs e) { Display(); } public asy ...

  8. [android] 显示意图激活另外一个activity

    可以使用跳转的方式类似javaweb来实现界面转换 显示意图就是必须要指定开启组件的具体信息,包名,组件名,组件的class 新建一个类TwoActivity ,继承Activity类,重写onCre ...

  9. word转PDF,PDF转Image,使用oppenOffice注意事项等

    最近在电子合同等项目中需要把word或者pdf转换成image,用到了openOffice把word转换pdf,以及把pdf转换成图片 感谢小伙伴张国清花费了三天时间来实现了此功能.下面我将把具体的步 ...

  10. 史上最全python面试题详解(三)(附带详细答案(关注、持续更新))

    38.面向对象深度优先和广度优先是什么? 39.面向对象中super的作用? 40.是否使用过functools中的函数?其作用是什么? Python自带的 functools 模块提供了一些常用的高 ...