Java基础系列之日期时间处理

 Java在处理时间方面提供了很多的API供我们开发使用。例如:Date,Calendar,SimpleDateFormat等等之类的。下面看例子Demo的实现过程:

package myapi.time.demo;
import java.math.BigDecimal;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class JavaTimeApi {
	/** 
     * 返回当前日期时间字符串<br> 
     * 默认格式:yyyy-mm-dd hh:mm:ss 
     *  
     * @return String 返回当前字符串型日期时间 
     */  
    public static String getCurrentTime() {   
        SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
        Date date = new Date();  
        return f.format(date);  
    }  
    
    
    /** 
     * 返回当前日期时间字符串<br> 
     * 默认格式:yyyymmddhhmmss 
     *  
     * @return String 返回当前字符串型日期时间 
     */  
    public static BigDecimal getCurrentTimeNumber() {  
        String returnStr = null;  
        SimpleDateFormat f = new SimpleDateFormat("yyyyMMddHHmmss");  
        Date date = new Date();  
        returnStr = f.format(date);  
        return new BigDecimal(returnStr);  
    }  
  
    
    /** 
     * 返回自定义格式的当前日期时间字符串 
     *  
     * @param format 
     *            格式规则 
     * @return String 返回当前字符串型日期时间 
     */  
    public static String getCurrentTime(String format) {  
        String returnStr = null;  
        SimpleDateFormat f = new SimpleDateFormat(format);  
        Date date = new Date();  
        returnStr = f.format(date);  
        return returnStr;  
    }  
    
    /** 
     * 返回指定格式的字符型日期 
     * @param date 
     * @param formatString 
     * @return 
     */  
    public static String getCurrentTime(Date date, String formatString) {  
        if (date==null) {  
            return null;  
        }  
        SimpleDateFormat simpledateformat = new SimpleDateFormat(formatString);  
        String strDate = simpledateformat.format(date);  
        return strDate;  
    }  
    
    
    /** 
     * 返回当前字符串型日期 
     *  
     * @param format 
     *            格式规则 
     *  
     * @return String 返回的字符串型日期 
     */  
    public static String getCurDate(String format) {  
        Calendar calendar = Calendar.getInstance();  
        SimpleDateFormat simpledateformat = new SimpleDateFormat(format);  
        String strDate = simpledateformat.format(calendar.getTime());  
        return strDate;  
    }  
    
    /** 
     * 将字符串型日期转换为日期型 
     *  
     * @param strDate 
     *            字符串型日期 
     * @param srcDateFormat 
     *            源日期格式 
     * @param dstDateFormat 
     *            目标日期格式 
     * @return Date 返回的util.Date型日期 
     */  
    public static Date getCurrentTime(String strDate, String srcDateFormat, String dstDateFormat) {  
        Date rtDate = null;  
        Date tmpDate = (new SimpleDateFormat(srcDateFormat)).parse(strDate, new ParsePosition(0));  
        String tmpString = null;  
        if (tmpDate != null)  
            tmpString = (new SimpleDateFormat(dstDateFormat)).format(tmpDate);  
        if (tmpString != null)  
            rtDate = (new SimpleDateFormat(dstDateFormat)).parse(tmpString, new ParsePosition(0));  
        return rtDate;  
    }  
    
    /** 
     * 将字符串型日期转换为日期型 
     *  
     * @param strDate 
     *            字符串型日期 
     * @param srcDateFormat 
     *            输出日期格式 
     * @return Date 返回的util.Date型日期 
     */  
    public static Date getDate(String strDate, String dateFormat) {  
        Date tmpDate = (new SimpleDateFormat(dateFormat)).parse(strDate, new ParsePosition(0));  
        return tmpDate;  
    } 
    
    
    /** 
     * 将字符串型日期转换为日期型 
     *  
     * @param strDate 
     *            字符串型日期 
     * @return Date 返回的util.Date型日期 
     */  
    public static Date getDate(String strDate) {  
        Date tmpDate = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).parse(strDate, new ParsePosition(0));  
        return tmpDate;  
    } 
    public static int getLastDayOfMonth(int year,int month){
        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);
        //格式化日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String lastDayOfMonth = sdf.format(cal.getTime());
        return Integer.valueOf(lastDayOfMonth.substring(lastDayOfMonth.length()-2, lastDayOfMonth.length()));
    }
    
    public static String getLastDayOfMonth(String strDate){
    	Date date=getDate(strDate);
        Calendar cal = Calendar.getInstance();
    	cal.setTime(date);
        int lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
        cal.set(Calendar.DAY_OF_MONTH, lastDay);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String lastDayOfMonth = sdf.format(cal.getTime());
        return lastDayOfMonth;
    }
	public static void main(String[] args) {
//		String currentTime=JavaTimeApi.getCurrentTime();
//		System.out.println("current time is "+currentTime);
//		BigDecimal currentTime=JavaTimeApi.getCurrentTimeAsNumber();
//		System.out.println("current time is "+currentTime);
//		String currentTime=JavaTimeApi.getCurrentTime("yyyy-MM-dd HH:mm:ss");
//		System.out.println(currentTime);
//		String currentTime=JavaTimeApi.Date2String(new Date(),"yyyy-MM-dd HH:mm:ss");
//		System.out.println(currentTime);
//		String currentTime=JavaTimeApi.getCurDate("yyyy-MM-dd HH:mm:ss");
//		System.out.println(currentTime);
//		Date currentTime=JavaTimeApi.stringToDate("2016-07-12 20:39:20","yyyy-MM-dd HH:mm:ss","yyyy-MM-dd");
//		String str=JavaTimeApi.Date2String(currentTime,"yyyy-MM-dd");
//		System.out.println(str);
//		String str=JavaTimeApi.getLastDayOfMonth(2016,7);
//		System.out.println(str);
//		String str=JavaTimeApi.getLastDayOfMonth("2016-7-13 12:12:12");
//		System.out.println("str="+str);
	}
}

上面的Demo基本设计到了平常日期处理的大部分问题,例如String类型的日期转换成Date类型,把Date转换为指定格式的String类型等等之类的。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏西安-晁州

TypeScript学习笔记之接口类型

TypeScript的接口,个人理解就是一种约束,包括各种类型的契约或者代码定义上的契约。当然,和java中的用法基本一致,接口可以被继承也可以被实现。 定义一...

1810
来自专栏前端正义联盟

我来重新学习 javascript 的面向对象(part 4)

续上一篇,随着业务越来越大,要考虑一些继承的玩意了,大千世界,各种东西我们要认识和甄别是需要靠大智慧去分门别类,生物学中把动植物按界、门、纲、目、科、属、种进行...

411
来自专栏企鹅号快讯

【编程经验】Python之collections模块

collections模块是一个不用不知道,一用就上瘾的模块。因为它提供了几种非常方便的数据结构和方法,在有些情况下特别好用。今天给大家总结一下其中的Order...

1665
来自专栏老秦求学

日期差值

题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为YY...

3369
来自专栏苦逼的码农

从零打卡leetcode之day 1--两数之和

不过心里才两个循环时间复杂度可是n的平方,心想肯定得超时,不过还是大胆提交一下提交,呵呵,居然通过了。。。。

951
来自专栏申龙斌的程序人生

零基础学编程028:面向对象编程OOP

在《零基础学编程021:获取股票实时行情数据》一节中,我们想获取6支股票的行情数据,在《零基础学编程022:函数的世界》里我们能够把重复性的代码封装为一个函数p...

2856
来自专栏学海无涯

7.字符串

654
来自专栏简书专栏

Python面对对象编程

面向过程:根据业务逻辑从上到下写代码 函数式:将某功能代码封装到函数中,日后便无需重复填写,仅调用函数即可 面对对象:对函数进行分类和封装,让开发"更好更快...

753
来自专栏赵俊的Java专栏

落单的数

1652
来自专栏前端布道

操作数组不要只会for循环

很多时候,我们在操作数组的时候往往就是一个for循环干到底,对数组提供的其它方法视而不见。看完本文,希望你可以换种思路处理数组,然后可以写出更加漂亮、简洁、函数...

2809

扫码关注云+社区