服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - Java Date时间类型的操作实现

Java Date时间类型的操作实现

2022-09-15 17:33P丶少 Java教程

本文主要介绍Java Date 日期类型,以及Calendar的怎么获取时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

本文主要介绍Java Date 日期类型,以及Calendar的怎么获取时间,然后写成时间工具类里面有下面这些方法:

  • - 时间转字符串(有默认时间格式,带时间格式)
  • - 字符串转时间(有默认时间格式,带时间格式)
  • - 计算两个日期之间相差的天数
  • - 计算当前时间多少天以后的日期
  • - 判断是否是日期格式

代码

很多说明都注释在代码上:

?
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
package datedemo;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.regex.Pattern;
/**
 * 日期工具
 */
public class DateUtil {
    private final static String A="yyyy-MM-dd";//日期格式
    private final static String B="yyyy-MM-dd HH:mm:ss";//日期格式
    private final static String C="yyyy/MM/dd HH:mm:ss";//日期格式
    private final static String exp="((^((1[8-9]\\d{2})|([2-9]\\d{3}))([-\\/\\._])(10|12|0?[13578])([-\\/\\._])(3[01]|[12][0-9]|0?[1-9])$)|(^((1[8-9]\\d{2})|([2-9]\\d{3}))([-\\/\\._])(11|0?[469])([-\\/\\._])(30|[12][0-9]|0?[1-9])$)|(^((1[8-9]\\d{2})|([2-9]\\d{3}))([-\\/\\._])(0?2)([-\\/\\._])(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)([-\\/\\._])(0?2)([-\\/\\._])(29)$)|(^([3579][26]00)([-\\/\\._])(0?2)([-\\/\\._])(29)$)|(^([1][89][0][48])([-\\/\\._])(0?2)([-\\/\\._])(29)$)|(^([2-9][0-9][0][48])([-\\/\\._])(0?2)([-\\/\\._])(29)$)|(^([1][89][2468][048])([-\\/\\._])(0?2)([-\\/\\._])(29)$)|(^([2-9][0-9][2468][048])([-\\/\\._])(0?2)([-\\/\\._])(29)$)|(^([1][89][13579][26])([-\\/\\._])(0?2)([-\\/\\._])(29)$)|(^([2-9][0-9][13579][26])([-\\/\\._])(0?2)([-\\/\\._])(29)$))";
    /**
     * 时间类型转字符串 固定返回 日期为 yyyy-MM-dd
     * @param date
     * @return String
     */
    public static String getDateToString(Date date) throws Exception{
        String s;
        SimpleDateFormat sft=new SimpleDateFormat(A);//格式时间对象
        s=sft.format(date);
        return s;
    }
 
    /**
     * 时间类型转字符串 不固定日期格式
     * @param date
     * @param format
     * @return String
     */
    public static String getDteToString (Date date,String format) throws Exception{
        String s;
        SimpleDateFormat sft=new SimpleDateFormat(format);//格式时间对象
        s=sft.format(date);
        return s;
    }
 
    /**
     * 字符串时间转时间类型 固定日期格式 yyyy-MM-dd
     * @param text 字符串时间
     * @return Date
     * @throws Exception
     */
    public static Date getStringToDate(String text) throws Exception{
        SimpleDateFormat sdf = new SimpleDateFormat(A);//格式时间对象
        Date date = sdf.parse(text);
        return date;
    }
 
    /**
     * 字符串时间转时间类型 不固定时间格式
     * @param text 时间字符串
     * @param format 日期格式
     * @return Date
     * @throws Exception
     */
    public static Date gettringToDate(String text,String format) throws Exception{
        SimpleDateFormat sdf=new SimpleDateFormat(format);//格式时间对象
        Date date=sdf.parse(text);
        return date;
    }
 
    /**
     *计算两个日期之间相差的天数
     * @param a 第一个日期时间
     * @param b 第二个日期时间
     * @return
     * @throws Exception
     */
    public static long getDaysBetweenTwoDates(Date a, Date b) throws Exception {
        //判断这两个时间的大小
        if(a.equals(b)) return 0;
        if(!a.before(b)){//保证返回的值为正数
            Date temp;
            temp=a;
            a=b;
            b=temp;
        }
        Calendar c = Calendar.getInstance();//获取calendar对像
        c.setTime(a);//设置时间 date  转 calendar 类型
        long t1 = c.getTimeInMillis();//获取时间戳
        c.setTime(b);
        long t2 = c.getTimeInMillis();
        //计算天数
        long days = (t2 - t1) / (24 * 60 * 60 * 1000);
        return days;
    }
 
    /**
     * 计算当前时间多少天以后的日期
     * @param currentDate 当前时间
     * @param distance 距离多少天
     * @return
     */
    public static Date getNextDasByNumber(Date currentDate,int distance)throws Exception{
        Calendar calendar=Calendar.getInstance();//获取日历对象
        calendar.setTime(currentDate);//设置当前时间 date  转 calendar 类型
        calendar.add(Calendar.DATE,distance);//计算离当前时间以后的日期
        Date date=calendar.getTime();//calendar 转 date  类型
        return date;
    }
 
    /**
     * 判断是否是日期格式
     * @param date  字符串
     * @return
     */
    public static boolean isDate(String date){
       // 创建 Pattern 对象 java正则表达式对象
        Pattern r = Pattern.compile(exp);
        boolean flag =  r.matcher(date).matches();//判断它格式是否正确
        return flag;
    }
 
    public static void main(String []arg){
        Calendar calendar=Calendar.getInstance();
        try {
            //验证计算两个日期之间相差的天数
            long i= getDaysBetweenTwoDates(getStringToDate("2017-02-11"),getStringToDate("2017-03-11"));
            System.out.println("计算(2017-02-11,2017-03-11)两个日期之间相差的天数:"+i);
 
            Date d= getNextDasByNumber(getStringToDate("2017-02-11"),28);
            System.out.println("计算(2017-02-11)时间128天以后的日期:"+getDateToString(d));
            boolean f= isDate("2017-02-11");
            System.out.println("判断2017-02-11日期格式是否正确:"+f);
            boolean f1= isDate("20170211");//正则表达式不支持这种
            System.out.println("判断20170211日期格式是否正确:"+f1);
            boolean f2= isDate("2017/02/11");
            System.out.println("判断2017/02/11日期格式是否正确:"+f2);
            System.out.println();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

结果

Java Date时间类型的操作实现

总结

Calendar比Java原有的Date更加强大些,它们之间也可以相互转换 ,不过用Calendar,小心获取月份时,它是阴历–得加一才是我们正常的月份;
就说这么多了,都是干货哈!!!,大家有不明白的或者有新的需求都可提出来,一起讨论讨论;

到此这篇关于Java Date时间类型的操作实现的文章就介绍到这了,更多相关Java Date类内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/qq_28430851/article/details/78144488

延伸 · 阅读

精彩推荐