首页 > 编程语言 > 详细

Java 日期格式和String 转换

时间:2016-01-07 18:41:01      阅读:246      评论:0      收藏:0      [点我收藏+]
/**
 * 实现对时间类型的格式处理.
 */
package com.eeechina.framework.util;
import java.text.ParseException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
 * 实现对时间类型的格式处理.<br>
 * 
 * 
 * 
 */
public class DateHelper {
/**
 * 将java.util.Date 格式转换为字符数组格式‘2009-08‘<br>
 * 返回字符数组数组0位代表年,数组1位代表月
 * 
 * @param time
 *            Date 日期<br>
 * @return String字符<br>
 */
public static String fmtToStringYearMonth(Date time) {
if (null == time) {
return "";
}
try {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
String ymd = format.format(time);
return ymd;
} catch (Exception e) {
}
return "";
}
/**
 * 字符串转换为java.util.Date<br>
 * 支持格式为 yyyy.MM.dd G ‘at‘ hh:mm:ss z 如 ‘2002-1-1 AD at 22:10:59 PSD‘<br>
 * yy/MM/dd HH:mm:ss 如 ‘2002/1/1 17:55:00‘<br>
 * yy/MM/dd HH:mm:ss pm 如 ‘2002/1/1 17:55:00 pm‘<br>
 * yy-MM-dd HH:mm:ss 如 ‘2002-1-1 17:55:00‘ <br>
 * yy-MM-dd HH:mm:ss am 如 ‘2002-1-1 17:55:00 am‘ <br>
 * 
 * @param time
 *            String 字符串<br>
 * @return Date 日期<br>
 */
public static Date stringToDate(String time) {
if (null == time || 0 > time.length()) {
return null;
}
try {
SimpleDateFormat formatter;
int tempPos = time.indexOf("AD");
time = time.trim();
formatter = new SimpleDateFormat("yyyy.MM.dd G ‘at‘ hh:mm:ss z");
if (tempPos > -1) {
time = time.substring(0, tempPos) + "公元"
+ time.substring(tempPos + "AD".length());// china
formatter = new SimpleDateFormat("yyyy.MM.dd G ‘at‘ hh:mm:ss z");
}
tempPos = time.indexOf("-");
if (tempPos > -1 && (time.indexOf(" ") < 0)) {
formatter = new SimpleDateFormat("yyyyMMddHHmmssZ");
} else if ((time.indexOf("/") > -1) && (time.indexOf(" ") > -1)) {
formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
} else if ((time.indexOf("-") > -1) && (time.indexOf(" ") > -1)) {
formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
} else if ((time.indexOf("/") > -1) && (time.indexOf("am") > -1)
|| (time.indexOf("pm") > -1)) {
formatter = new SimpleDateFormat("yyyy-MM-dd KK:mm:ss a");
} else if ((time.indexOf("-") > -1) && (time.indexOf("am") > -1)
|| (time.indexOf("pm") > -1)) {
formatter = new SimpleDateFormat("yyyy-MM-dd KK:mm:ss a");
}
ParsePosition pos = new ParsePosition(0);
java.util.Date ctime = formatter.parse(time, pos);
return ctime;
} catch (Exception e) {
}
return null;
}
/**
 * 将java.util.Date 格式转换为字符串格式‘yyyy/MM/dd‘<br>
 * 
 * @param time
 *            Date 日期<br>
 * @return String 字符串<br>
 */
public static String fmtShortEnu(Date time) {
if (null == time) {
return "";
}
try {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");
String strDate = formatter.format(time);
return strDate;
} catch (Exception e) {
}
return "";
}
/**
 * 将java.util.Date 格式转换为字符数组格式‘{[yyyy][MM][dd]}‘<br>
 * 返回字符数组数组0位代表年,数组1位代表月和数组2位代表日
 * 
 * @param time
 *            Date 日期<br>
 * @return String[] 字符数组<br>
 */
public static String[] fmtToStringArray(Date time) {
if (null == time) {
return null;
}
String ymd = fmtToString(time);
return ymd.split("-");
}
/**
 * 将java.util.Date 格式转换为字符数组格式‘2009-08-04‘<br>
 * 返回字符数组数组0位代表年,数组1位代表月和数组2位代表日
 * 
 * @param time
 *            Date 日期<br>
 * @return String字符<br>
 */
public static String fmtToString(Date time) {
if (null == time) {
return "";
}
try {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String ymd = format.format(time);
return ymd;
} catch (Exception e) {
}
return "";
}
/**
 * 将java.util.Date 格式转换为字符串格式‘yyyy-MM-dd HH:mm:ss‘(24小时制)<br>
 * 如Sat May 11 17:24:21 CST 2002 to ‘2002-05-11 17:24:21‘<br>
 * 
 * @param time
 *            Date 日期<br>
 * @return String 字符串<br>
 */
public static String dateToString(Date time) {
if (null == time) {
return "";
}
try {
SimpleDateFormat formatter;
formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String ctime = formatter.format(time);
return ctime;
} catch (Exception e) {
}
return "";
}
/**
 * 将java.util.Date 格式转换为字符串格式‘yyyy-MM-dd HH:mm:ss a‘(12小时制)<br>
 * 如Sat May 11 17:23:22 CST 2002 to ‘2002-05-11 05:23:22 下午‘<br>
 * 
 * @param time
 *            Date 日期<br>
 * @param x
 *            int 任意整数如:1<br>
 * @return String 字符串<br>
 */
public static String dateToString(Date time, int x) {
if (null == time) {
return "";
}
try {
SimpleDateFormat formatter;
formatter = new SimpleDateFormat("yyyy-MM-dd KK:mm:ss a");
String ctime = formatter.format(time);
return ctime;
} catch (Exception e) {
}
return "";
}
/**
 * 取系统当前时间:返回只值为如下形式 2002-10-30 20:24:39
 * 
 * @return String
 */
public static String Now() {
return dateToString(new Date());
}
/**
 * 取系统当前时间:返回只值为如下形式 2002-10-30 08:28:56 下午
 * 
 * @param hour
 *            为任意整数
 * @return String
 */
public static String Now(int hour) {
return dateToString(new Date(), hour);
}
/**
 * 取系统当前时间:返回值为如下形式 2002-10-30
 * 
 * @return String
 */
public static String getYYYY_MM_DD() {
return dateToString(new Date()).substring(0, 10);
}
/**
 * 取系统给定时间:返回值为如下形式 2002-10-30
 * 
 * @return String
 */
public static String getYYYY_MM_DD(String date) {
return date.substring(0, 10);
}
/**
 * 取得当前小时值.
 * 
 * @return String
 */
public static String getHour() {
try {
SimpleDateFormat formatter = new SimpleDateFormat("H");
String ctime = formatter.format(new Date());
return ctime;
} catch (Exception e) {
}
return "";
}
/**
 * 取得当前天数.
 * 
 * @return String
 */
public static String getDay() {
try {
SimpleDateFormat formatter;
formatter = new SimpleDateFormat("d");
String ctime = formatter.format(new Date());
return ctime;
} catch (Exception e) {
}
return "";
}
/**
 * 取得当前月数.
 * 
 * @return String
 */
public static String getMonth() {
try {
SimpleDateFormat formatter;
formatter = new SimpleDateFormat("M");
String ctime = formatter.format(new Date());
return ctime;
} catch (Exception e) {
}
return "";
}
/**
 * 取得当前年数.
 * 
 * @return String
 */
public static String getYear() {
try {
SimpleDateFormat formatter;
formatter = new SimpleDateFormat("yyyy");
String ctime = formatter.format(new Date());
return ctime;
} catch (Exception e) {
}
return "";
}
/**
 * 取得当前周数.
 * 
 * @return String
 */
public static String getWeek() {
try {
SimpleDateFormat formatter;
formatter = new SimpleDateFormat("E");
String ctime = formatter.format(new Date());
return ctime;
} catch (Exception e) {
}
return "";
}
/**
 * 得到本月的第一天
 * 
 * @return
 */
public static Date getMonthFirstDay() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, calendar
.getActualMinimum(Calendar.DAY_OF_MONTH));
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
return calendar.getTime();
}
/**
 * 得到本月的最后一天
 * 
 * @return
 */
public static Date getMonthLastDay() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, calendar
.getActualMaximum(Calendar.DAY_OF_MONTH));
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
return calendar.getTime();
}
/**
 * 得到上月的第一天
 * 
 * @return
 */
public static Date getLastMonthFirstDay() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, calendar
.getActualMinimum(Calendar.DAY_OF_MONTH));
calendar.add(Calendar.MONTH, -1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
return calendar.getTime();
}
/**
 * 得到上月的最后一天
 * 
 * @return
 */
public static Date getLastMonthLastDay() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, calendar
.getActualMaximum(Calendar.DAY_OF_MONTH));
calendar.add(Calendar.MONTH, -1);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
return calendar.getTime();
}
/**
 * 得到上周的这个时间
 * 
 * @return
 */
public static Date getLastWeekThisTime() {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.WEEK_OF_YEAR, -1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
return calendar.getTime();
}
/**
 * 得到昨天
 * 
 * @return
 */
public static Date getYesterday() {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_YEAR, -1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
return calendar.getTime();
}
/**
 * 得到今天
 * 
 * @return
 */
public static Date getToday() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
return calendar.getTime();
}
/**
 * 得到明天
 * 
 * @return
 */
public static Date getTomorrow() {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_YEAR, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
return calendar.getTime();
}
/**
 * 
 * 日期:2011-12-12<br>
 * 版本:v1.0<br>
 * 描述:getDaysBetween(得到两个DATE 之间的日期list) <br>
 * 
 * @param date_start
 * @param date_end
 * @return List<Date>
 * @Exception 异常对象 <br>
 */
public static List<Date> getDaysBetween(Date date_start, Date date_end) {
List<Date> list = new ArrayList<Date>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date d1 = null;
Date d2 = null;
try {
d1 = sdf.parse(DateHelper.fmtToString(date_start));
d2 = sdf.parse(DateHelper.fmtToString(date_end));
} catch (ParseException e) {
}
Calendar cal_start = Calendar.getInstance();
Calendar cal_end = Calendar.getInstance();
cal_start.setTime(d1);
cal_end.setTime(d2);
while (cal_start.getTimeInMillis() <= cal_end.getTimeInMillis()) {
list.add(cal_start.getTime());
cal_start.add(Calendar.DAY_OF_YEAR, +1);
}
;
return list;
}
// 把一个字符串转换成日期类型
/**
 * 日期:2012-12-20<br>
 * 版本:v1.0<br>
 * 描述:string2Date(yyyy-mm-dd) <br>
 * 主要方法:<br>
 将yyyy-mm-dd 类型的日期字符串,转换为年-月-日形式日期
 * @param str
 * @return
 * Date
 * @Exception 异常对象 <br>
 */
public static Date string2Date(String str) {
if (null==str||str.length()<1) {
return null;
}
String pattern = "yyyy-MM-dd"; // 系统默认转换该类型
if (0 < str.indexOf("/")) {
pattern = "yyyy/MM/dd";
}
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
Date date = null;
try {
date = sdf.parse(str);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
// 将Date 类型转为String
/**
 * 日期:2012-12-20<br>
 * 版本:v1.0<br>
 * 描述:date2String(将年-月-日 转换为String 串) <br>
 * 主要方法:<br>
 * @param date
 * @return
 * String
 * @Exception 异常对象 <br>
 */
public static String date2String(Date date) {
if (null == date) {
return "";
}
SimpleDateFormat sdf = null;
String str = "";
try {
sdf = new SimpleDateFormat("yyyy-MM-dd");
str = sdf.format(date);
} catch (Exception e) {
sdf = new SimpleDateFormat("yyyy/MM/dd");
str = sdf.format(date);
}
return str;
}
}


本文出自 “SunnyFly” 博客,谢绝转载!

Java 日期格式和String 转换

原文:http://beens001.blog.51cto.com/5907841/1732432

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!