精华内容
下载资源
问答
  • Java Date 时间类型的操作

    万次阅读 2017-09-30 17:36:38
    本文主要介绍Java Date 日期类型,以及Calendar的怎么获取时间,然后写成时间工具类里面有下面这些方法: - 时间转字符串(有默认时间格式,带时间格式) - 字符串转时间(有默认时间格式,带时间格式) - ...

    本文主要介绍Java Date 日期类型,以及Calendar的怎么获取时间,然后写成时间工具类里面有下面这些方法:
    - 时间转字符串(有默认时间格式,带时间格式)
    - 字符串转时间(有默认时间格式,带时间格式)
    - 计算两个日期之间相差的天数
    - 计算当前时间多少天以后的日期
    - 判断是否是日期格式

    代码

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

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

    结果

    这里写图片描述

    总结

    Calendar比Java原有的Date更加强大些,它们之间也可以相互转换 ,不过用Calendar,小心获取月份时,它是阴历–得加一才是我们正常的月份;
    就说这么多了,都是干货哈!!!,大家有不明白的或者有新的需求都可提出来,一起讨论讨论;
    下次我还想实现一个人在某年的工作总时间和日期功能,还在纠结中。。。。。。。。。。。。。。。。。。

    展开全文
  • java Date 日期格式化

    千次阅读 2019-08-28 20:53:27
    今天来整理一下java中的日期类 1 时间原点的概念 八种基本数据类型包括字符串最终都可以以数字的方式表现出来(数据就是二进制,而二进制是可以转换成10进制的) 日期类型类似,2022年1,1,也可以用一个数字来代替 ...

    今天来整理一下java中的日期类
    1 时间原点的概念
    八种基本数据类型包括字符串最终都可以以数字的方式表现出来(数据就是二进制,而二进制是可以转换成10进制的)
    日期类型类似,2022年1,1,也可以用一个数字来代替
    在日期中最特殊的数字其实也是0,0这个日期代表的就是java中时间的原点——》1970,1,1 8,0,0 1969全球发布了第一个unix系统,综合考虑就认为1970
    凡是在这个0点的基础上,过一毫秒,意味着+1

    2 创建日期对象

    		//当前时间
    		Date date=new Date();
    		System.out.println(date);//Wed Aug 28 14:39:16 CST 2019
    		//从原点过了100秒的时间
    		//1970 01 01 08:00:00  100
    		//1970 01 01 08:01:40  100
    		//1000毫秒=1秒  100000=100s
    		Date date2=new Date(100000);、//也就是从原点时间过了100000毫秒
    		System.out.println(date2);//Thu Jan 01 08:01:40 CST 1970
    
    

    3 getTime的使用
    getTime()返回一个long整型
    这个数代表从197011800开始每过一毫秒就增加1
    直接打印对象会出现这样的日期格式:Wed Aug 28 14:39:16 CST 2019
    可是阅读性差,需要转换成数字,方便阅读,至于格式化后面会讲

    		Date now=new Date();
    		System.out.println(now);
    		//当前时间距离原点时间一共过了多少毫秒
    		System.out.println(now.getTime());
    		//1566974943085
    		//如果要得到原点
    		Date zero=new Date(0);
    		System.out.println(zero.getTime());
    
    

    4 运行一段程序需要多少时间

    
    //计算一段程序运行了好久时间
    public class Damo4 {
    	public static void main(String[] args) {
    		Damo4 damo4=new Damo4();
    		damo4.forTest();
    	}
    	//观察一个程序执行多少时间
    		public long startTime() {
    			return new Date().getTime();
    		}
    		
    		//10万次的for循环
    		public  void forTest() {
    			long startTime=startTime();
    			int sum=0;
    			for(int i=1;i<100000;i++) {
    				sum+=i;
    				//new DateTest("name:"+i);
    			}
    			System.out.println(sum);
    			long endTime=endTime();
    			long result=endTime-startTime;
    			System.out.println(result);
    		}
    		public long endTime() {
    			return new Date().getTime();
    		}
    }
    
    

    5 System.currentTimeMills()
    当前日期的毫秒数
    理论上说getTime,currentTimeMills两个值应该是一样的,但是由于机器性能不相同,彼此相差几十毫秒,因为每一行代码实际上都需要时间来运行

    		public void show() {
    			int sum=0;
    			for(int i=1;i<100000;i++) {
    				sum+=i;
    				//new DateTest("name:"+i);
    			}
    			System.out.println(sum);
    			System.out.println(System.currentTimeMillis());
    		}
    		
    
    

    运行结果为:
    704982704
    1566994316913

    6 日期格式化
    6.1 日期格式化成字符串

    		//y year 年
    		//m month 月
    		//d day 日
    		//h hour 小时
    		//m minute 分钟
    		//s seconds 秒
    		//s milliseconds 毫秒
    		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SS");
    		Date now=new Date();
    		String nowStr=sdf.format(now);
    		System.out.println(nowStr);//2019-08-28 15:25:01 546
    
    

    6.2 字符串格式化成日期

    		SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    
    		String str="2019/8/28 11:12:01";
    		try {
    			Date date=sdf.parse(str);//DateForamt.parset(str)
    			System.out.println(date);//Unparseable date: "2019/8/28 11:12:01"
    			//Wed Aug 28 11:12:01 CST 2019
    		} catch (ParseException e) {
    			e.printStackTrace();
    		}
    
    

    注意:字符串转日期类的时候需要注意格式必须匹配到一起,否则可能会报异常

    7 日历
    通过日历类管理日期

    日历最佳实践案例:翻日历
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;//util 工具
    //需求:打印当前时间,下个月的今天,上个月的今天,去年的今天,上个月的第三天
    public class TestDate01 {
    	//设定打印的时间格式
    	//simpledateformat
    	private static SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    
    	public static void main(String[] args) {
    		//搞一个日历耍耍
    		Calendar c=Calendar.getInstance();
    		
    		//获取今天
    		Date now=c.getTime();
    		print(now);//2019-08-28 16:26:54
    		//下个月的今天——每个月有固定的天数28 29 30 31
    		//我要把今天加入日历
    		c.setTime(now);
    		//翻日历
    		c.add(Calendar.MONTH,1);//下个月的今天 1 就是一个月后多一天
    		//calendar.add(Calendar.MONTH, -3);//减号,就是前几个月。加号,就是往后几个月
    		//calendar.add(Calendar.DATE, -3);//减号,就是当前日期的前几天,加号,就是当前时间的后几天
    		//calendar.add(Calendar.YEAR, -3);//减号,就是当前年份的前几年,加号,就是当前年份的后几年
    		Date nextMonthNow=c.getTime();
    		print(nextMonthNow);
    		//获取去年的今天
    		c.setTime(now);
    		c.add(Calendar.YEAR,-1);
    		print(c.getTime());
    		//上个月的第三天
    		c.setTime(now);
    		c.add(Calendar.MONTH,-1);
    		//不改变大字段,改变小字段--不改年月改曰
    		c.set(Calendar.DATE,3);
    		print(c.getTime());
    		
    	}
    	
    	//打印格式
    	private static void print(Date date) {
    		System.out.println(sdf.format(date));
    	}
    	
    }
    
    
    
    展开全文
  • date的before方法 日期类before()方法 (Date Class before() method) before() method is available in java.util package. before()方法在java.util包中可用。 before() method is used to check whether this date...

    date的before方法

    日期类before()方法 (Date Class before() method)

    • before() method is available in java.util package.

      before()方法在java.util包中可用。

    • before() method is used to check whether this date is before the given date (d) or not.

      before()方法用于检查此日期是否早于给定日期(d)。

    • before() method is a non-static method, it is accessible with the class object only and if we try to access the method with the class name then we will get an error.

      before()方法是一种非静态方法,只能通过类对象访问,如果尝试使用类名称访问该方法,则会收到错误消息。

    • before() method may throw an exception at the time of the checking date.

      检查日期之时, before()方法可能会引发异常。

      NullPointerException: This exception may throw when the given parameter (d) is null exists.

      NullPointerException:如果给定参数(d)为null,则可能引发此异常。

    Syntax:

    句法:

        public boolean before(Date d);
    
    

    Parameter(s):

    参数:

    • Date d – represents the Date object to be tested.

      Date d –表示要测试的Date对象。

    Return value:

    返回值:

    The return type of this method is boolean, it returns true when this date is before the given Date (d) otherwise it returns false.

    此方法的返回类型为boolean ,如果此日期早于给定的Date(d),则返回true,否则返回false。

    Example:

    例:

    // Java program to demonstrate the example 
    // of boolean before() method of Date 
    
    import java.util.*;
    
    public class BeforeDate {
        public static void main(String[] args) {
            // create two Date object with two dates
            Date this_date = new Date(2016, 8, 20);
            Date given_date = new Date(2010, 11, 30);
    
            // By using before() method is to check
            // whether this date (this_date) is before the
            // given date (given_date) or not
            boolean status = this_date.before(given_date);
    
            // Display status
            System.out.println("this_date.before(given_date): " + status);
        }
    }
    
    

    Output

    输出量

    this_date.before(given_date): false
    
    
    

    翻译自: https://www.includehelp.com/java/date-before-method-with-example.aspx

    date的before方法

    展开全文
  • java Date类型 空值处理

    千次阅读 2020-07-11 22:54:08
    问题描述:在做一个Excel文件导入导出的功能时,Excel的一个日期的字段是空值,而我对应的java bean 对应的属性是一个date类型,直接赋值会报错 解决方法(待改进): 我在set进java bean之前进行了判断看传过来的...

    问题描述:在做一个Excel文件导入导出的功能时,Excel的一个日期的字段是空值,而我对应的java  bean 对应的属性是一个date类型,直接赋值会报错

    解决方法(待改进):

    我在set进java bean之前进行了判断看传过来的数据是不是空值

    String finepaydate = "";                             
    String finepaydate1 = "";
    finepaydate1 = cell.getStringCellValue().trim();
    if(!StringUtils.isBlank(finepaydate1)){
        finepaydate = finepaydate1;
    }else{
        finepaydate = null;
    }
    
    if(!StringUtils.isBlank(finepaydate)){//判断为否为空
        hBaseCbljlc.setFinepaydate(simpleDateFormat.parse(finepaydate));
    }
    

    小节:我在网上看了一些其他的文章,不能直接赋值的原因是因为""属于String类型不符合Date的期望类型,会报错,不过null却可以直接赋值Date  以后会尝试下判断是否为空值然后直接赋值null (项目已经提交 不想改啦  哈哈哈哈)

    展开全文
  • Java Date类型与Date字符串 互相转换

    万次阅读 2019-04-30 16:08:13
    DateDateString Date date = new Date(); //可以转成你想要的格式 yyyy/MM/dd HH:mm:ss 等等 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateString = format.format(date...
  • date.after方法 日期类after()方法 (Date Class after() method) after() method is available in java.util package. after()方法在java.util包中可用。 after() method is used to check whether this date is ...
  • Java Date toString()方法与示例

    千次阅读 2020-07-22 09:34:34
    日期类toString()方法 (Date Class toString() method) toString() method is available in java.util package. toString()方法在java.util包中可用。 toString() method is for string denotation of this Date ...
  • Java Date类获取当前年月日

    千次阅读 2020-11-18 23:26:33
    文章目录一、代码实现 一、代码实现 SimpleDateFormat sdf = new SimpleDateFormat();// 格式化时间 sdf.applyPattern("yyyy-MM-dd ...Date date = new Date();// 获取当前时间 String data=sdf.format(date); ...
  • Java Date 时区设置(GMT和CST)

    千次阅读 2020-11-24 14:51:37
    ​ 学习java.util.Date&java.sql.Date时,发现输出结果中:Sun Nov 22 13:27:45 CST 2020,于是查阅资料研学。 Main: ​ 关于时间格式:GMT 、 UTC 、 CST 、ISO 。下文主要就CST和GMT进行整理总结。 时间格式...
  • java Date日期去掉时分秒

    千次阅读 2020-11-24 15:59:50
    https://blog.csdn.net/weixin_42270490/article/details/105269140
  • Java基础:Java Date数据类型

    万次阅读 2018-08-14 20:06:26
    Java数据类型中Date数据类型在处理一些日常应用问题常常被人们使用。  然而在使用过程中许多人却没有真正的去了解有关于Java 数据类型中Date数据类型。  通常在这使用某一种数据类型过程中并不一定就会有哦相应...
  • Java Date getTime()方法与示例

    千次阅读 2020-08-01 02:28:23
    日期类的getTime()方法 (Date Class getTime() method) getTime() method is available in java.util package. getTime()方法在java.util包中可用。 getTime() method is used to get a date with time in ...
  • Java Date总结

    万次阅读 2016-11-02 21:30:02
    在日常的程序中,我们经常会用到日期时间,常常会从字符串和日期进行转换,因此本文决定深入学习一下javaDate相关部分,我这里用的jdk是8.   一 java中的日期总述 在编程中,一般涉及到日期的操作有三种: 1日期...
  • javaDate和String之间的转换 /** *程序1 *将date转换成String *得到像 2018-11-26 这种格式的日期字符串 */ public static String gainDate(Date date){ SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd...
  • java的equals方法 日期类equals()方法 (Date Class equals() method) equals() method is available in java.util package. equals()方法在java.util包中可用。 equals() method is used to check whether this date...
  • java Date 改变时分秒

    千次阅读 2019-07-09 13:11:05
    Date now = new Date(); Calendar cal1 = Calendar.getInstance(); cal1.setTime(now); // 将时分秒,毫秒域清零 cal1.set(Calendar.HOUR_OF_DAY, 23); cal1.set(Calendar.M...
  • Date日期类中的getMonth()与getYear()提示过时警告,这里的警告是方法过时,不建议使用。 解决方法,使用Calendar类,但是这里的获取月份是,会比数据中的月份少1,这里需要进行加 1 操作。 SimpleDateFormat ft...
  • javaDate类计算两个时间之间的天数

    万次阅读 2018-10-22 21:05:29
    import java.text.ParseException; import java.text.SimpleDateFormat; import java.util....import java.util.Date; /** * 实现1949-10-1 --- 2016-8-15 之间的天数。 * 方法一: * 通过Calendar类的日...
  • Java Date before和after 的使用

    千次阅读 2019-12-25 15:23:06
    1、date1.after(date),当date1大于date2时,返回true,当小于等于时,返回false; 2、date1.before(date),当date1小于date2时,返回true,当大于等于时,返回false; 3、若要校验date2必须比date1小,且不能相等时...
  • javaDate 计算时间差

    千次阅读 2018-10-08 12:27:05
    public static String getDatePoor(Date endDate, Date nowDate) { long nd = 1000 * 24 * 60 * 60; long nh = 1000 * 60 * 60; long nm = 1000 * 60; // long ns = 1000; // 获得两个时间的毫秒时间差异 .....
  • java Date类型:24小时制和12小时制

    千次阅读 2018-05-12 15:03:31
    java Date类型:24小时制和12小时制2011年12月14日 13:35:55阅读数:15080String getTimestamp() {DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss sss");Date date = new Date();return df....
  • Java Date转long 秒单位 返回给前台

    千次阅读 2018-07-27 08:57:14
    然后重写里面的方法 public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException 之后我们在需要将Date转换成long的实体类中 添加注解 @JsonSe...
  • Calendar 在 Java 中是一个抽象类(Abstract Class),GregorianCalendar 是它的一个具体实现。 Calendar 与 Date 的转换非常简单: Calendar cal = Calendar.getInstance(); // 从一个 Calendar对象中获取 Date ...
  • Java Date与String的相互转换

    万次阅读 2017-03-16 14:54:37
    1.String转为Date参数String类型的格式必须与注释中的日期格式对齐,否则会报错。 public static Date stringToDate(String time) { DateFormat format = new SimpleDateFormat("yyyy-MM-dd");//日期格式 Date ...
  • 需要一个Date格式的时间,这里使用当前时间 Date date = new Date() Tue Aug 11 00:00:24 CST 2020, 也就是2020年8月11日 现在我需要用这个时间减去一天,一个月,一年,该如何操作? 需要用到Calendar类! ...
  • 1.date类型时间相减: String stateTime = "2016-10-24"; String endTime = "2016-10-28"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try { ...
  • //将java中的date转换成毫秒 并传入Timestamp构造函数里 返回timestamp  Timestamp timestamp=new Timestamp(date.getTime()); //插入数据 psta2.setTimestamp(12,timestamp); 之前都是用string格式...
  • 时间戳转java Date()总是1970年

    万次阅读 2018-06-22 15:53:37
    new Date().getTime() 的值: 1529653514606 时间戳是:1529653514 Date date = new Date(时间戳 * 1000L); 即可

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,001,033
精华内容 400,413
关键字:

JAVAdate