`
snoopy7713
  • 浏览: 1151903 次
  • 性别: Icon_minigender_2
  • 来自: 火星郊区
博客专栏
Group-logo
OSGi
浏览量:0
社区版块
存档分类
最新评论

JAVA各种时间类型的取得

    博客分类:
  • java
阅读更多
package com.hello.test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;

import org.apache.log4j.Logger;

public class DateUtil {

	private static Logger log = Logger.getLogger(DateUtil.class);

	private static String defaultDatePattern = null;

	private static String timePattern = "HH:mm";

	public static Date getSystemTime() {
		Calendar now = Calendar.getInstance();
		return now.getTime();

	}

	public static synchronized String getDatePattern() {
		Locale locale = Locale.CHINA; // LocaleContextHolder.getLocale();

		try {
			defaultDatePattern = ResourceBundle.getBundle("yyyy-MM-dd", locale).getString("date.format");
		} catch (MissingResourceException mse) {
			defaultDatePattern = "yyyy-MM-dd";
		}

		return defaultDatePattern;
	}

	public static final String getDate(Date aDate) {
		SimpleDateFormat df = null;
		String returnValue = "";

		if (aDate != null) {
			df = new SimpleDateFormat(getDatePattern());
			returnValue = df.format(aDate);
		}

		return (returnValue);
	}

	public static final Date convertStringToDate(String aMask, String strDate) {
		SimpleDateFormat df = null;
		Date date = null;
		df = new SimpleDateFormat(aMask);

		if (log.isDebugEnabled()) {
			log.debug("converting '" + strDate + "' to date with mask '" + aMask + "'");
		}

		try {
			date = df.parse(strDate);
		} catch (ParseException pe) {
			log.error("ParseException: " + pe);
		}

		return (date);
	}

	public static String getTimeNow(Date theTime) {
		return getDateTime(timePattern, theTime);
	}

	public static Calendar getToday() throws ParseException {
		Date today = new Date();
		SimpleDateFormat df = new SimpleDateFormat(getDatePattern());

		// This seems like quite a hack (date -> string -> date),
		// but it works ;-)
		String todayAsString = df.format(today);
		Calendar cal = new GregorianCalendar();
		cal.setTime(convertStringToDate(todayAsString));

		return cal;
	}

	public static Date getMonday(Date date) {
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		if (c.get(Calendar.DAY_OF_WEEK) == 1) {
			date = DateUtil.addDays(date, -7);
			c.setTime(date);
		}

		c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
		String mondayString = DateUtil.format(c.getTime(), "yyyy-MM-dd");
		mondayString = mondayString + " 00:00:00";
		return convertStringToDate("yyyy-MM-dd HH:mm:ss", mondayString);
	}

	public static Date getFriday(Date date) {
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		c.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
		String fridayString = format(c.getTime(), "yyyy-MM-dd");
		fridayString = fridayString + " 23:59:59";
		return convertStringToDate("yyyy-MM-dd HH:mm:ss", fridayString);

	}

	public static final String getDateTime(String aMask, Date aDate) {
		SimpleDateFormat df = null;
		String returnValue = "";

		if (aDate == null) {
			log.error("aDate is null!");
		} else {
			df = new SimpleDateFormat(aMask);
			returnValue = df.format(aDate);
		}

		return (returnValue);
	}

	public static final String convertDateToString(Date aDate) {
		return getDateTime(getDatePattern(), aDate);
	}

	public static Date convertStringToDate(String strDate) {
		Date aDate = null;

		try {
			if (log.isDebugEnabled()) {
				log.debug("converting date with pattern: " + getDatePattern());
			}

			aDate = convertStringToDate(getDatePattern(), strDate);
		} catch (Exception pe) {
			log.error("Could not convert '" + strDate + "' to a date, throwing exception");

		}

		return aDate;
	}

	public static int dayDiff(Date first, Date second) {

		long msPerDay = 1000 * 60 * 60 * 24;
		long diff = (first.getTime() / msPerDay) - (second.getTime() / msPerDay);

		Long convertLong = new Long(diff);
		return convertLong.intValue();
	}

	public static long dayDiffMilSecond(Date first, Date second) {

		long diff = first.getTime() - second.getTime();
		Long convertLong = new Long(diff);
		return convertLong;
	}

	public static String format(Date date, String pattern) {
		if (date == null)
			return "";
		SimpleDateFormat formatter = new SimpleDateFormat(pattern);
		return formatter.format(date);
	}

	static public final Date addDays(Date target, int days) {
		long msPerDay = 1000 * 60 * 60 * 24; // 一天的毫秒数
		long msTarget = target.getTime(); // 返回从一个特定的日期(1970。。)到现在经过的毫秒数。
		long msSum = msTarget + (msPerDay * days);
		Date result = new Date();
		result.setTime(msSum); // 根据毫秒设置日期
		return result;
	}

	public static Date beforeDays(Date target, int days) {
		long msPerDay = 1000 * 60 * 60 * 24; // 一天的毫秒数
		long msTarget = target.getTime(); // 返回从一个特定的日期(1970。。)到现在经过的毫秒数。
		long msSum = msTarget - (msPerDay * days);
		Date result = new Date();
		result.setTime(msSum); // 根据毫秒设置日期
		return result;
	}

	public static Date formatString(String time, String format) {
		try {
			SimpleDateFormat formater = new SimpleDateFormat(format);
			return formater.parse(time);
		} catch (Exception e) {
			return null;
		}
	}

	public static Date getFirstDateOfMonth(Date date) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.set(Calendar.DAY_OF_MONTH, 1);
		calendar.set(Calendar.HOUR_OF_DAY, 0);
		calendar.set(Calendar.MINUTE, 0);
		calendar.set(Calendar.SECOND, 0);
		return calendar.getTime();
	}

	public static Date getLastlyDateOfMonth(Date date) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		int month = calendar.get(Calendar.MONTH);
		calendar.set(Calendar.MONTH, month + 1);
		calendar.set(Calendar.DAY_OF_MONTH, 1);
		calendar.set(Calendar.HOUR_OF_DAY, 23);
		calendar.set(Calendar.MINUTE, 59);
		calendar.set(Calendar.SECOND, 59);
		calendar.add(Calendar.DAY_OF_MONTH, -1);
		return calendar.getTime();
	}

	public static Date getFirstDateOfNextMonth(Date date) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		int month = calendar.get(Calendar.MONTH);
		calendar.set(Calendar.MONTH, month + 1);
		calendar.set(Calendar.DAY_OF_MONTH, 1);
		calendar.set(Calendar.HOUR_OF_DAY, 0);
		calendar.set(Calendar.MINUTE, 0);
		calendar.set(Calendar.SECOND, 0);
		return calendar.getTime();

	}

	public static String getCurrentDayPath() {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
		Date now = new Date();
		String filePath = sdf.format(now) + "/";
		sdf = new SimpleDateFormat("MM");
		filePath += sdf.format(now) + "/";
		sdf = new SimpleDateFormat("dd");
		filePath += sdf.format(now) + "/";

		return filePath;
	}
}
 

 

分享到:
评论

相关推荐

    java源码包---java 源码 大量 实例

    显示出当前时间及年份,还可以选择年份及月份和日期 Java编写的HTML浏览器 一个目标文件 摘要:Java源码,网络相关,浏览器  Java编写的HTML浏览器源代码,一个很简单甚至不算是浏览器的HTML浏览器,使用方法:  可...

    java源码包3

    显示出当前时间及年份,还可以选择年份及月份和日期 Java编写的HTML浏览器 一个目标文件 摘要:Java源码,网络相关,浏览器  Java编写的HTML浏览器源代码,一个很简单甚至不算是浏览器的HTML浏览器,使用方法: ...

    java源码包2

    显示出当前时间及年份,还可以选择年份及月份和日期 Java编写的HTML浏览器 一个目标文件 摘要:Java源码,网络相关,浏览器  Java编写的HTML浏览器源代码,一个很简单甚至不算是浏览器的HTML浏览器,使用方法: ...

    JAVA面试题最全集.pdf

    4. 日期和时间:如何取得年月日、小时分秒,如何取得从1970年到现在的毫秒数,如何获取某个日期是当月的最后一天,如何格式化日期。 5. 数组和集合、文件和目录(I/O)操作:如何列出某个目录下的所有文件和子目录,...

    java中时间转换问题及将时间插入数据库

    本文将详细介绍 Java 中时间转换的问题,以及如何将 Java.util.Date 类型数据插入到数据库中。 时间和字符串的转换 在 Java 中,我们可以使用 `SimpleDateFormat` 类来实现时间和字符串之间的转换。`...

    JAVA笔试题-包含JAVA各个方面的笔试题

    15. **Java 8新特性**:熟悉Lambda表达式、函数式接口、Stream API、日期时间API等Java 8的新特性。 通过以上知识点的学习和练习,将有助于你在Java笔试和面试中取得优异的表现。提供的文档和网页资料,如"java面试...

    java配套练习题

    9. **Java标准库**:掌握Java标准库中的各种类和方法,例如日期时间API、数学计算、网络编程、XML处理等,可以大大提高编程效率。 10. **Java 8及以后的更新**:Java 8引入了Lambda表达式、Stream API和Optional类...

    java自学ppt

    讲解了Java标准库中的实用类,如日期时间类、数学运算类、字符串处理类等,以及它们在实际编程中的应用。 5. **Java面向对象程序设计第11章--集合类和泛型.ppt**: 集合框架是Java中用于存储和操作对象的重要工具...

    java参考手册

    在Java 8的日期和时间API(java.time包)中,取代了原有的java.util.Date和java.util.Calendar,引入了诸如LocalDate、LocalTime、LocalDateTime、ZonedDateTime等新类,提供了更为直观和易用的时间日期操作方法,...

    java源程序代码(包含java个层次知识)

    9. **Java API和标准库**:熟悉并学会使用Java提供的各种内置类和方法,如String类、Math类、日期时间API等。 10. **设计模式**:学习常见的设计模式(如工厂模式、单例模式、观察者模式等),提高代码的可维护性和...

    java入门教程(经典)

    Java之所以能够在短时间内取得巨大成功,并且对整个Web世界产生深远影响,主要得益于以下几个方面: 1. 平台无关性:Java的一个重要特性是“一次编写,到处运行”(Write Once, Run Anywhere,简称WORA)。Java语言...

    SUN公司JAVA认证

    5. **日期和时间API**:Calendar和Date类,以及后来引入的java.time包。 这些模拟试题将帮助考生熟悉考试格式,巩固基础知识,并提高解决问题的能力。通过反复练习和理解试题背后的原理,考生可以在实际认证考试中...

    Java实验.rar

    8. **Java标准库**:Java API提供了大量的类和接口,如Math类用于数学运算,DateTime类处理日期和时间,Network类处理网络通信等,这些都是编程时常用的工具。 在进行这个实验时,你将有机会实践这些概念,通过编写...

    Java语言程序设计(一)串讲

    - **Oak到Java的转变**:随着互联网的发展,Oak语言虽然未能在消费性电子产品市场上取得成功,但它却因为其平台无关性、简洁性和高安全性等特点,成为了在Web页面中嵌入动态和交互性内容的理想选择。Oak语言经过改进...

    Java开发详解.zip

    031107_〖第11章:Java常用类库〗_实例操作:取得当前日期笔记.pdf 031108_【第11章:Java常用类库】_Math与Random类笔记.pdf 031109_【第11章:Java常用类库】_NumberFormat笔记.pdf 031110_【第11章:Java常用类库...

    java太阳认证考试系统

    13. **标准库API**:熟悉Java SE API中的常用类和方法,如日期时间API、数学运算、正则表达式等。 通过"java太阳认证考试系统"提供的模拟测试,考生可以反复练习这些知识点,检验自己的理解和应用能力,以便在实际...

    JAVA学习笔记-良葛格

    随着时间的推移,Java逐渐演化成了一个拥有广泛生态的编程语言,并且成为了跨平台编程的代名词。 ### Java语言的特点 Java语言被认为是更简单、更易于学习的面向对象(Object-Oriented)编程语言。它简化了C++中的...

    java并发编程实践pdf笔记

    Java提供了多种类型的锁,如`synchronized`、`ReentrantLock`、`ReadWriteLock`等,它们可以实现不同的并发策略。 - 除了互斥锁,还有读写锁(`ReentrantReadWriteLock`),允许多个线程同时读取但限制同时写入,...

    1z0-808.236q.pdf (java 8 silver 题库)

    考生在准备1Z0-808考试时,需要熟悉Java 8的新特性,如Lambda表达式、流API、新的日期时间API等。这些是Java 8对语言的核心改进部分,也是考试的重点内容。 总结来说,从文件中我们可以提取的IT知识点包括: - Java...

    Java快速入门

    Java快速入门是针对初学...通过深入学习Java,开发者可以构建各种类型的应用,从简单的桌面程序到复杂的企业级解决方案,甚至在移动设备和嵌入式系统中发挥作用。因此,Java快速入门是新学习者踏入编程世界的重要一步。

Global site tag (gtag.js) - Google Analytics