Java中常用日期操作及方法

前言

涉及到日期计算和字符串与日期转换,转来转去很是麻烦,于是归纳总结一下。以下都可以用。

一、Dateformat类的常用格式

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

二、日期转字符串,根据需要调整格式

    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);
    }

三、字符串转日期

    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);
    }

四、获取本月第一天

    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);
    }

五、获取本月最后一天

    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);
    }

六、获取上个月第一天。最后一天同理

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获取年月日时分秒

    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));
    }

八、得到两个时间相隔的天数

    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);
    }

九、当前日期加一天

    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

    public void CalToDate() throws ParseException {
        Calendar cal=Calendar.getInstance();
        Date date=cal.getTime();
    }

十一、date转换成Calendar

    public void DateToCal() throws ParseException {
        Calendar cal=Calendar.getInstance();
        Date date = new Date();
        cal.setTime(date);
    }

十二、获得当前周周一的日期

    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;
    }

推荐阅读:

Redis入门教程(一) https://www.cnblogs.com/jichi/p/10285346.html

Spring入门详细教程(一) https://www.cnblogs.com/jichi/p/10165538.html

Spring入门详细教程(二) https://www.cnblogs.com/jichi/p/10176601.html

Spring入门详细教程(三) https://www.cnblogs.com/jichi/p/10177004.html

Spring入门详细教程(四) https://www.cnblogs.com/jichi/p/10211475.html

原文地址:https://www.cnblogs.com/jichi/p/10294077.html

时间: 2024-10-27 13:51:29

Java中常用日期操作及方法的相关文章

Java中的日期操作

Date : getTime() .setTime() SimpleDateFormate :   Formate(Date). parse(String s) Calendar : getInstance().set() .get().getActualMaximum().add().  gettime().setTime(Date). 字符串.Date.Calendar之间的转换 ---------------------------------------淫荡分隔-------------

Java中关于日期类那些方法

转载请注明出处http://blog.csdn.net/harryweasley/article/details/41977633,谢谢 本篇文章主要介绍Date,DateFormat,SimpleDateFormat,Calendar这四个类 Date类: 在java.util包下 类 Date 表示特定的瞬间,精确到毫秒. 从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和分析日期字符串.Date 中的相应方法已废弃.

Java中关于日期的处理方法

(1)Date *  Date: *  介绍是java.util包下的Date类,这个类是负责描述日期这类数据的. *  Date主要是描述当前时间毫秒值对象. *  它中的很多方法不利于国际化,已经被废弃. * *  Date是把当前的毫秒值封装成Date对象. *  如何把一个毫秒值转成Date对象 *  Date()它是把当前的时间点的毫秒值转成Date对象 *  Date(long date) 把我们指定的一个毫秒值转成Date对象 *  setTime(long time) 把当前的D

java中的日期操作Calendar和Date

1. Calendar转Date Calendar calendar = Calendar.getInstance(); Date date = calendar.getTime(); 2. Date转Calendar Date date = new Date(); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); 3. 获取时间的年月日时分秒 Date里的getYear()等已经不推荐使用了,要使用以下方式获

java中常用到的math方法(Math.PI、Math.random()、Math.abs(double)、Math.floor(double)、Math.ceil(double)、Math.round(double))

public class MathDemo { public static void main(String args[]){ /** * abs求绝对值 */ System.out.println(Math.abs(-10.4));    //10.4 System.out.println(Math.abs(10.1));     //10.1 /** * ceil天花板的意思,就是返回大的值,注意一些特殊值 */ System.out.println(Math.ceil(-10.1));  

java中常用的包、类、以及包中常用的类、方法、属性-----io包

由于最近有需要,所以下面是我整理的在开发中常用的包.类.以及包中常用的类.方法.属性:有需要的看看 java中常用的包.类.以及包中常用的类.方法.属性 常用的包 java.io.*; java.util.*; java.lang.*; java.math.*; java.sql.*; java.text.*; java.awt.*; javax.swing.*;   包名 接口 类 方法 属性 java.io.*; java.io.Serializable实现序列化 java.io.Buffe

java中常用的字符串的截取方法

java中常用的字符串的截取方法   1.length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int len=s.length(); 2.charAt() 截取一个字符 例:char ch; ch="abc".charAt(1); 返回'b' 3.getChars() 截取多个字符 void getChars(int sourceStart,int sourceEnd,char target

java中常用的工具类(三)

继续分享java中常用的一些工具类.前两篇的文章中有人评论使用Apache 的lang包和IO包,或者Google的Guava库.后续的我会加上的!谢谢支持IT江湖 一.连接数据库的综合类 Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53

将java中数组转换为ArrayList的方法实例(包括ArrayList转数组)

方法一:使用Arrays.asList()方法 1 2 String[] asset = {"equity", "stocks", "gold", "foreign exchange","fixed income", "futures", "options"}; List<String> assetList = Arrays.asList(asset);