java中经常使用的日期格式化(全)「建议收藏」

java中经常使用的日期格式化(全)

大家好,又见面了,我是全栈君。

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
 * 获取当前的日期格式为:yyyy-MM-dd HH:mm:ss
 * 
 * @author Arthur(user_006)
 * @version 1.0.0 2010/04/24 14:00(星期六)
 */
public class TimerUtil {

	/**
	 * 获取当前的日期 , 默认格式
	 * 
	 * @return 当前的日期
	 */
	public synchronized static Date getCurrentCalendar() {

		Calendar calendar = Calendar.getInstance();
		return calendar.getTime();
	}

	/**
	 * 获取当前日期 , 格式yyyy-MM-dd , 如: 2010-04-24
	 * 
	 * @return
	 */
	public synchronized static String getCurrentDate() {

		Calendar calendar = Calendar.getInstance();

		StringBuffer sb = new StringBuffer();

		sb.append(calendar.get(Calendar.YEAR)).append("-");
		sb.append(calendar.get(Calendar.MONTH) + 1).append("-");
		sb.append(calendar.get(Calendar.DAY_OF_MONTH));
		return sb.toString();
	}

	/**
	 * 把字符形式的日期转换成Date类型 , 格式yyyy-MM-DD
	 * 
	 * @param date
	 *            日期的字符串形式
	 * 
	 * @return Data类型的日期
	 */
	public synchronized static Date convertToDate(String date) {

		DateFormat format = new SimpleDateFormat("yyyy-MM-DD");

		try {

			return format.parse(date);

		} catch (ParseException e) {

			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 把日期转换为指定的格式
	 * 
	 * @param date
	 *            要转换的日期
	 * @param pattern
	 *            转换的格式
	 * @return
	 */
	public synchronized static Date format(Date date, String pattern) {

		if (pattern != null && pattern.trim().length() > 0) {

			DateFormat format = new SimpleDateFormat(pattern);

			String stringDate = format.format(date);

			return TimerUtil.convertToDate(stringDate);
		}
		return null;
	}

	/**
	 * 将日期转换为字符串 , 格式yyyy-MM-dd HH:mm:ss
	 * 
	 * @param date
	 *            要转换的日期
	 * @return
	 */
	public synchronized static String convertToString(Date date) {

		DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return format.format(date);
	}
	
	/**
	 * 将日期转换为字符串 , 格式yyyy-MM-dd HH:mm:ss
	 * 
	 * @param date
	 *            要转换的日期
	 * @return
	 */
	public synchronized static String convertToStrShort(Date date) {

		DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		return format.format(date);
	}

	/**
	 * 将日期转换为字符串 , 格式yyyyMMddHHmmss
	 * 
	 * @param date
	 *            要转换的日期
	 * @return
	 */
	public synchronized static String convertToString2(Date date) {
		DateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
		return format.format(date);
	}

	
	/**
	 * 将日期转换为指定格式的字符串
	 * 
	 * @param date
	 *            要转换的日期
	 * @param formatText
	 *            转换的格式
	 * @return
	 */
	public synchronized static String convertToString(Date date,
			String formatText) {

		DateFormat format = new SimpleDateFormat(formatText);

		Calendar calendar = Calendar.getInstance();

		StringBuffer sb = new StringBuffer();

		sb.append(calendar.get(Calendar.YEAR)).append("-");
		sb.append(calendar.get(Calendar.MONTH) + 1).append("-");
		sb.append(calendar.get(Calendar.DAY_OF_MONTH));

		return format.format(date);
	}

	/**
	 * 获取本周一的日期
	 * 
	 * @return
	 */
	public synchronized static Date getMondayOFWeek() {

		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);// 这里设置从周一開始,若须要依据系统时区自己主动获取,则採用下边的方式

		return calendar.getTime();
	}

	/**
	 * 获取本周日日期
	 * 
	 * @return
	 */
	public synchronized static Date getCurrentWeekday() {

		Calendar calendar = Calendar.getInstance();
		calendar.add(Calendar.DATE, getCurrentPlus());// 把当前日期的DATE加上当前日期与本周日之间相差的天数
		return calendar.getTime();
	}

	/**
	 * 获取上周日的日期
	 * 
	 * @return
	 */
	public synchronized static Date getPreviousWeekday() {

		Calendar calendar = Calendar.getInstance();
		// calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY+7);
		calendar.add(Calendar.DATE, getCurrentPlus() - 7);// 把当前日期的DATE加上当前日期与本周日之间相差的天数
		return calendar.getTime();
	}

	/**
	 * 获取上周日的日期
	 * 
	 * @return
	 */
	public synchronized static Date getPreviousMonday() {

		Calendar calendar = Calendar.getInstance();
		// calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY+7);
		calendar.add(Calendar.DATE, getCurrentPlus() - 13);// 把当前日期的DATE加上当前日期与本周日之间相差的天数
		return calendar.getTime();
	}

	/**
	 * 获取上周日的日期
	 * 
	 * @return
	 */
	public synchronized static Date getNextWeekday() {

		Calendar calendar = Calendar.getInstance();
		// calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY+7);
		calendar.add(Calendar.DATE, getCurrentPlus() + 1 + 6);// 把当前日期的DATE加上当前日期与本周日之间相差的天数
		return calendar.getTime();
	}

	/**
	 * 获取上周日的日期
	 * 
	 * @return
	 */
	public synchronized static Date getNextMonday() {

		Calendar calendar = Calendar.getInstance();
		// calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY+7);
		calendar.add(Calendar.DATE, getCurrentPlus() + 1);// 把当前日期的DATE加上当前日期与本周日之间相差的天数
		return calendar.getTime();
	}

	/**
	 * 获取当前日期与本周周日之间相差的天数
	 * 
	 * @return
	 */
	public synchronized static int getCurrentPlus() {

		Calendar calendar = Calendar.getInstance();
		int days = calendar.get(Calendar.DAY_OF_WEEK) - 1;// 在中国是已星期一作为一周的第一天,所以这里减1
		return 7 - days;
	}

	public synchronized static int getCurrentYear() {

		Calendar calendar = Calendar.getInstance();
		return calendar.get(Calendar.YEAR);
	}

	/**
	 * 返回指定日期的当月第一天
	 * 
	 * @param date
	 * @return
	 */
	@SuppressWarnings("static-access")
	public synchronized static Date getFirstDayInMonth(Date date) {

		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.set(calendar.DATE, 1);
		return calendar.getTime();
	}

	/**
	 * 返回指定日期的当月最后一天
	 * 
	 * @param date
	 * @return
	 */
	@SuppressWarnings("static-access")
	public synchronized static Date getLastDayInMonth(Date date) {

		Calendar calendar = Calendar.getInstance();

		calendar.setTime(date);
		calendar.add(calendar.MONTH, 1);
		calendar.set(calendar.DATE, 1);
		calendar.add(calendar.DATE, -1);

		return calendar.getTime();
	}

	/*
	 * 计算两个日期之间的天数
	 */
	public static int getDaysBetween(Calendar d1, Calendar d2) {
		if (d1.after(d2)) {
			java.util.Calendar swap = d1;
			d1 = d2;
			d2 = swap;
		}
		int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR);
		int y2 = d2.get(Calendar.YEAR);
		if (d1.get(Calendar.YEAR) != y2) {
			d1 = (Calendar) d1.clone();
			do {
				days += d1.getActualMaximum(Calendar.DAY_OF_YEAR);// 得到当年的实际天数
				d1.add(Calendar.YEAR, 1);
			} while (d1.get(Calendar.YEAR) != y2);
		}
		return days;
	}
	/*
	 * 计算两个日期之间的时间
	 */
	public static String getGapTime(Date createTime) {
		// TODO Auto-generated method stub
		Calendar d2 = Calendar.getInstance();
		Calendar d1 = Calendar.getInstance();
		d1.setTime(createTime);
		int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR);
		if (days < 1) {
			int hour = d2.get(Calendar.HOUR_OF_DAY)
					- d1.get(Calendar.HOUR_OF_DAY);
			if (hour < 1) {
				int munites = d2.get(Calendar.MINUTE) - d1.get(Calendar.MINUTE);
				if (munites == 0) {
					return "刚刚";
				} else {
					return munites + "分钟前";
				}
			} else {
				return hour + "小时前";
			}

		} else {
			return days + "天前";
		}
	}
	
	//加天数
	public static String addDays(int day){
		Calendar calendar = Calendar.getInstance();
		calendar.add(Calendar.DAY_OF_MONTH, day);
		StringBuffer sb = new StringBuffer();
		sb.append(calendar.get(Calendar.YEAR)).append("-");
		sb.append(calendar.get(Calendar.MONTH) + 1).append("-");
		sb.append(calendar.get(Calendar.DAY_OF_MONTH));
		return sb.toString();
	}
	
	//加年份
	public static String addYears(String now, int year) throws ParseException{
		  Calendar fromCal=Calendar.getInstance();
		 
		   DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");
	   Date date=dateFormat.parse(now);
	   fromCal.setTime(date);
	   fromCal.add(Calendar.YEAR, year);
	   
	   return dateFormat.format(fromCal.getTime());
	 }
	
	//加天数(特定时间)
	public static String addDate(String now, int day) throws ParseException{
		  Calendar fromCal=Calendar.getInstance();
		 
		   DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");
	   Date date=dateFormat.parse(now);
	   fromCal.setTime(date);
	   fromCal.add(Calendar.DATE, day);
	   
	   return dateFormat.format(fromCal.getTime());
	 }

	/**
	 * 格多少时间
	 * @throws ParseException 
	 */

	@SuppressWarnings("deprecation")
	public static void main(String[] args) throws ParseException {
		System.out.println(TimerUtil.addYears("2008-12-01",7));
	}
		/*public static void main(String[] args) {
			   String createDate = "2008-12-01";
			   SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
			   try {
			    Date date = sdf.parse(createDate);
			    Calendar cl = Calendar.getInstance();
			    cl.setTime(date);
			    cl.add(Calendar.DATE,31);
			    String temp = "";
			    temp = sdf.format(cl.getTime());
			    System.out.println(temp);
			   } catch (ParseException e) {
			    // TODO Auto-generated catch block
			    e.printStackTrace();
			   }
			}*/
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115600.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea激活码2019_通用破解码

    idea激活码2019_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    41
  • 并行编程中的lock free技术

    并行编程中的lock free技术lockfree(中文一般叫“无锁”,一般指的都是基于CAS指令的无锁技术)是利用处理器的一些特殊的原子指令来避免传统并行设计中对锁(lock)的使用。众所周知,锁在解决并行过程中资源访问问题的同时可能会引入诸多新的问题,比如死锁(deadlock),另外锁的申请/释放对性能也有不小的影响,当然最大的问题还在于使用锁的代码模块通常难以进行组合。lockfree的目标就是要消除锁对编程

    2022年7月19日
    15
  • 十大Intellij IDEA快捷键

    十大Intellij IDEA快捷键IntellijIDEA中有很多快捷键让人爱不释手,stackoverflow上也有一些有趣的讨论。每个人都有自己的最爱,想排出个理想的榜单还真是困难。以前也整理过Intellij的快捷键,这次就按照我日常开发时的使用频率,简单分类列一下我最喜欢的十大快捷-神-键吧。1智能提示Intellij最强大的功能当然就是Intelligence智能!基本的代码提示用Ctrl+Space,还有…

    2022年5月14日
    39
  • Wox使用指南[通俗易懂]

    Wox使用指南[通俗易懂]Wox使用指南下载安装从下载地址下载最新版本的wox,我下载的是exe版的Wox-1.3.578.exe下载以后直接安装即可,不会有选择项,安装成功以后会在屏幕上出现一个搜索框,默认失

    2022年8月4日
    9
  • Java取整函数的使用

    在开发中,取整操作使用是很普遍的,所以Java在java.lang.Math类中添加了数字取整方法。在java.lang.Math类中主要包括以下几种取整方法。方法 说明 publicstaticdoubleceil(doublea) 返回大于等于参数的最小整数。 publicstaticdoublefloor(doublea) 返回小于等于参…

    2022年4月8日
    47
  • 文本聚类简单实现_文本聚类分析

    文本聚类简单实现_文本聚类分析引用:CoreConcepts—gensim<<自然语言处理入门>>一、简介文本聚类(textclustering,也称文档聚类或documentclustering)指的是对文档进行的聚类分析,被广泛用于文本挖掘和信息检索领域。最初文本聚类仅用于文本归档,后来人们又挖掘出了许多新用途,比如改善搜索结果、生成同义词,等等。在文本的预处理中,聚类同样可以发挥作用比如在标注语料之前,通常需要从…

    2025年6月28日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号