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 条评论
登录 后参与评论

相关文章

来自专栏一个会写诗的程序员的博客

Spring Boot 结合 spring data jpa中的 DTO 映射查询《Spring Boot 开发实战》

我们知道,在 MyBatis 中直接 DTO 映射查询的时候,写起来非常简单。只要字段对应上即可:

935
来自专栏码匠的流水账

聊聊spring cloud gateway的GatewayFilter

本文主要研究一下spring cloud gateway的GatewayFilter

2011
来自专栏游戏杂谈

使用ScriptableObject创建.asset文件

定义为public的变量就存储在xxx.asset中,通过 CommonConfig.Instance.Get 直接获取数据。

765
来自专栏CodingToDie

JPA @Query实现,动态代理,注解, 正则,Spring扩展的使用

上一篇文章中提到了如何使用注解完成一个简单的ORM,其中注解使用 JavaPersistenceAPI 但是其中没有我们需要的 @Query 和 @Param ...

411
来自专栏积累沉淀

干货--Redis+Spring+Struts2实现网站计算器应用项目案例

有关redis的介绍我就不说了,可以参看我前几篇文章,redis快速入门 首先来看一下redis的应用场景 ? 下面是我这个项目的的运行的场景截图 ...

1976
来自专栏小筱月

java ssm框架实现分页功能 (oracle)

LIMIT a,b : 参数 a:第 a 条数据开始查询(不包括第 a 条), 参数 b:查询 b 条数据

1222
来自专栏CodingToDie

FastSql ORM 实现

FastSql 中 ORM 的实现 Table of Contents 原理 实现 1. 使用注解 2. 反射工具类 3. 简单的 model 4. 注解解析 ...

4346
来自专栏王硕

原 PostgreSQL源码中的List和ListCell的说明

3138
来自专栏史上最简单的Spring Cloud教程

SpringBoot非官方教程 | 第六篇:springboot整合mybatis

本文主要讲解如何在springboot下整合mybatis,并访问数据库。由于mybatis这个框架太过于流行,所以我就不讲解了。 引入依赖 在pom文件引入m...

2188
来自专栏CodingToDie

JPA @Query实现,动态代理,注解, 正则,Spring扩展的使用

@Query 的实现 动态代理 注解 表设计 model repository 大体流程 代理使用 将生成代理放入 Spring IOC 容器中 invoke方...

4086

扫码关注云+社区