记录Util类
来源:互联网 发布:龙章贵事件知乎 编辑:程序博客网 时间:2024/06/08 06:01
MoneyUtil
-
处理金额一定需要使用BigDecimal,数据库中存放以分为单位的数据,进行扣款的时候遇到四舍五入的问题,可以四舍五入之后将分之后的数据截断掉,例如设置count为0
public static BigDecimal multiply(BigDecimal v1, BigDecimal v2, int count) { return v1.multiply(v2).divide(new BigDecimal(1), count, BigDecimal.ROUND_HALF_UP); }
import java.math.BigDecimal;import java.text.DecimalFormat;import java.text.NumberFormat;import java.util.Locale;import org.apache.commons.lang.StringUtils;/** * 金额处理工具类 * * @author wangyf * @version $Id: MoneyUtil.java,v 0.1 2012-8-1 上午08:44:17 wangyf Exp $ */public class MoneyUtil { /** * 转化金额格式,以元为单位0.00元 * * @param money * @return */ public static String getMoneyDesc(Long money) { if (money == null) { return "0.00"; } Money costPriceM = new Money(); costPriceM.setCent(money); return costPriceM.toString(); } public static String multiply(String a, String b) { if (a.isEmpty() || b.isEmpty()) { return "0.00"; } Money ret = new Money(); ret.setAmount(new BigDecimal(a).multiply(new BigDecimal(b))); return ret.toString(); } public static double add(double v1, double v2) { BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.add(b2).doubleValue(); } public static BigDecimal add(BigDecimal v1, BigDecimal v2) { return v1.add(v2); } public static double add(String v1, String v2) { BigDecimal b1 = new BigDecimal(v1); BigDecimal b2 = new BigDecimal(v2); return b1.add(b2).doubleValue(); } public static double sub(double v1, double v2) { BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.subtract(b2).doubleValue(); } public static BigDecimal sub(BigDecimal v1, BigDecimal v2) { return v1.subtract(v2); } public static double sub(String v1, String v2) { if (v1 == null || v1.equals("")) { v1 = "0"; } if (v2 == null || v2.equals("")) { v2 = "0"; } BigDecimal b1 = new BigDecimal(v1); BigDecimal b2 = new BigDecimal(v2); return b1.subtract(b2).doubleValue(); } public static double mul(double v1, double v2) { BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.multiply(b2).doubleValue(); } public static double mul(String v1, String v2) { BigDecimal b1 = new BigDecimal(v1); BigDecimal b2 = new BigDecimal(v2); return b1.multiply(b2).doubleValue(); } public static Long mul(BigDecimal v1, Long v2) { BigDecimal b2 = new BigDecimal(v2.toString()); return v1.multiply(b2).longValue(); } public static Long mulToLong(Double v1, Long v2) { BigDecimal b1 = new BigDecimal(v1 != null ? v1.toString() : "0"); BigDecimal b2 = new BigDecimal(v2 != null ? v2.toString() : "0"); return b1.multiply(b2).longValue(); } public static BigDecimal multiply(BigDecimal v1, Long v2) { BigDecimal b2 = new BigDecimal(v2.toString()); return v1.multiply(b2); } public static BigDecimal multiply(BigDecimal v1, BigDecimal v2) { return v1.multiply(v2); } public static BigDecimal multiply(BigDecimal v1, BigDecimal v2, int count) { return v1.multiply(v2).divide(new BigDecimal(1), count, BigDecimal.ROUND_HALF_UP); } public static BigDecimal multiply(BigDecimal v1, double v2) { BigDecimal b2 = new BigDecimal(v2); return v1.multiply(b2); } public static BigDecimal multiply(BigDecimal v1, int v2) { BigDecimal b2 = new BigDecimal(v2); return v1.multiply(b2); } public static double div(double v1, double v2) { return div(v1, v2, 2); } public static Long div(double v1, BigDecimal v2) { BigDecimal b1 = new BigDecimal(String.valueOf(v1)); return b1.divide(v2, 2, 4).longValue(); } public static double div(String v1, String v2) { if (v1 == null || v1.equals("")) { v1 = "0"; } if (v2 == null || v2.equals("")) { v2 = "0"; } return div(Double.parseDouble(v1), Double.parseDouble(v2), 2); } public static BigDecimal div(Long v1, BigDecimal v2) { if (v1 == null) { v1 = 0l; } if (v2 == null) { v2 = new BigDecimal("0"); } return new BigDecimal(v1.toString()).divide(v2, 2, 4); } public static BigDecimal div(Double v1, BigDecimal v2) { if (v1 == null) { v1 = 0d; } if (v2 == null) { v2 = new BigDecimal("0"); } return new BigDecimal(v1.toString()).divide(v2, 2, 4); } public static double div(double v1, double v2, int scale) { if (scale < 0) { throw new IllegalArgumentException( "The scale must be a positive integer or zero"); } else { BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.divide(b2, scale, 4).doubleValue(); } } public static double div(String v1, String v2, int scale) { if (scale < 0) { throw new IllegalArgumentException( "The scale must be a positive integer or zero"); } else { BigDecimal b1 = new BigDecimal(v1); BigDecimal b2 = new BigDecimal(v2); return b1.divide(b2, scale, 4).doubleValue(); } } public static double round(double v, int scale) { if (scale < 0) { throw new IllegalArgumentException( "The scale must be a positive integer or zero"); } else { BigDecimal b = new BigDecimal(Double.toString(v)); BigDecimal one = new BigDecimal("1"); return b.divide(one, scale, 4).doubleValue(); } } public static double round(String v, int scale) { if (scale < 0) { throw new IllegalArgumentException( "The scale must be a positive integer or zero"); } else { BigDecimal b = new BigDecimal(v); BigDecimal one = new BigDecimal("1"); return b.divide(one, scale, 4).doubleValue(); } } /** * 转换成金钱的字符串,带格式(两位小数,千分位) * * @param intMoney * @return * @create Dec 15, 2008 9:40:39 AM yuancong * @history */ public static String getFormatMoney(String strMoney) { return getFormatMoney(strMoney, null); } /** * 转换成金钱的字符串,带格式(两位小数,千分位) * * @param strMoney * @param formatStr * 格式(例如: ###.00 元), * #占位表示可空,0占位表示少了就补0占位,E占位表示使用科学计数法,格式中加入其它字符就直接显示出来 * ,如在前面或者后面加个[元]字.更多的请参考DecimalFormat * @return * @create Dec 15, 2008 9:40:39 AM yuancong * @history */ public static String getFormatMoney(String strMoney, String formatStr) { return getFormatMoney(strMoney, formatStr, Locale.US); } /** * 转换成金钱的字符串,带格式(两位小数,千分位) * * @param strMoney * @param formatStr * 格式(例如: ###.00 元), * #占位表示可空,0占位表示少了就补0占位,E占位表示使用科学计数法,格式中加入其它字符就直接显示出来 * ,如在前面或者后面加个[元]字.更多的请参考DecimalFormat * @param locale * 使用哪国的数字格式,如美国的千分位来表示数字 * @return * @create Dec 15, 2008 9:40:39 AM yuancong * @history */ public static String getFormatMoney(String strMoney, String formatStr, Locale locale) { Double doubleMoney; if (strMoney == null || strMoney.trim().equals("")) { strMoney = "0"; } try { doubleMoney = Double.valueOf(strMoney); } catch (Exception e) { return strMoney; } return getFormatMoney(doubleMoney, formatStr, locale); } /** * 转换成金钱的字符串,带格式(两位小数,千分位) * * @param intMoney * @return * @create Dec 15, 2008 9:40:39 AM yuancong * @history */ public static String getFormatMoney(Integer intMoney) { return getFormatMoney(intMoney, null); } /** * 转换成金钱的字符串,带格式(两位小数,千分位) * * @param intMoney * @param formatStr * 格式(例如: ###.00 元), * #占位表示可空,0占位表示少了就补0占位,E占位表示使用科学计数法,格式中加入其它字符就直接显示出来 * ,如在前面或者后面加个[元]字.更多的请参考DecimalFormat * @return * @create Dec 15, 2008 9:40:39 AM yuancong * @history */ public static String getFormatMoney(Integer intMoney, String formatStr) { return getFormatMoney(intMoney, formatStr, Locale.US); } /** * 转换成金钱的字符串,带格式(两位小数,千分位) * * @param intMoney * @param formatStr * 格式(例如: ###.00 元), * #占位表示可空,0占位表示少了就补0占位,E占位表示使用科学计数法,格式中加入其它字符就直接显示出来 * ,如在前面或者后面加个[元]字.更多的请参考DecimalFormat * @param locale * 使用哪国的数字格式,如美国的千分位来表示数字 * @return * @create Dec 15, 2008 9:40:39 AM yuancong * @history */ public static String getFormatMoney(Integer intMoney, String formatStr, Locale locale) { if (intMoney == null) { intMoney = Integer.parseInt("0"); } if (null == formatStr || formatStr.trim().equals("")) { formatStr = "¥#,##0.00"; } DecimalFormat df = (DecimalFormat) NumberFormat.getInstance(locale);// 设置使用美国数字格式(千分位) df.applyPattern(formatStr);// 设置应用金额格式 return df.format(intMoney); } /** * 转换成金钱的字符串,带格式(两位小数,千分位) * * @param doubleMoney * @return * @create Dec 15, 2008 9:40:39 AM yuancong * @history */ public static String getFormatMoney(Double doubleMoney) { return getFormatMoney(doubleMoney, null); } /** * 转换成金钱的字符串,带格式 * * @param doubleMoney * @param formatStr * 格式(例如: ###.00 元), * #占位表示可空,0占位表示少了就补0占位,E占位表示使用科学计数法,格式中加入其它字符就直接显示出来 * ,如在前面或者后面加个[元]字.更多的请参考DecimalFormat * @return * @create Dec 15, 2008 9:40:39 AM yuancong * @history */ public static String getFormatMoney(Double doubleMoney, String formatStr) { if (doubleMoney == null) { doubleMoney = Double.valueOf(0); } return getFormatMoney(doubleMoney, formatStr, Locale.US); } /** * 转换成金钱的字符串,带格式 * * @param doubleMoney * @param formatStr * 格式(例如: ###.00 元), * #占位表示可空,0占位表示少了就补0占位,E占位表示使用科学计数法,格式中加入其它字符就直接显示出来 * ,如在前面或者后面加个[元]字.更多的请参考DecimalFormat * @param locale * 使用哪国的数字格式,如美国的千分位来表示数字 * @return * @create Dec 15, 2008 9:40:39 AM yuancong * @history */ public static String getFormatMoney(Double doubleMoney, String formatStr, Locale locale) { if (doubleMoney == null) { doubleMoney = Double.valueOf(0); } if (null == formatStr || formatStr.trim().equals("")) { formatStr = "¥#,##0.00"; } DecimalFormat df = (DecimalFormat) NumberFormat.getInstance(locale);// 设置使用美国数字格式(千分位) df.applyPattern(formatStr);// 设置应用金额格式 return df.format(doubleMoney); } /** * 转换成金钱的字符串,带格式(两位小数,千分位) * * @param bigDecimalMoney * @return * @create Dec 15, 2008 9:40:39 AM yuancong * @history */ public static String getFormatMoney(BigDecimal bigDecimalMoney) { return getFormatMoney(bigDecimalMoney, null); } /** * 转换成金钱的字符串,带格式 * * @param bigDecimalMoney * @param formatStr * 格式(例如: ###.00 元), * #占位表示可空,0占位表示少了就补0占位,E占位表示使用科学计数法,格式中加入其它字符就直接显示出来 * ,如在前面或者后面加个[元]字.更多的请参考DecimalFormat * @param locale * 使用哪国的数字格式,如美国的千分位来表示数字 * @return * @create Dec 15, 2008 9:40:39 AM yuancong * @history */ public static String getFormatMoney(BigDecimal bigDecimalMoney, String formatStr) { return getFormatMoney(bigDecimalMoney, formatStr, Locale.US); } /** * 转换成金钱的字符串,带格式 * * @param bigDecimalMoney * @param formatStr * 格式(例如: ###.00 元), * #占位表示可空,0占位表示少了就补0占位,E占位表示使用科学计数法,格式中加入其它字符就直接显示出来 * ,如在前面或者后面加个[元]字.更多的请参考DecimalFormat * @param locale * 使用哪国的数字格式,如美国的千分位来表示数字 * @return * @create Dec 15, 2008 9:40:39 AM yuancong * @history */ public static String getFormatMoney(BigDecimal bigDecimalMoney, String formatStr, Locale locale) { if (bigDecimalMoney == null) { bigDecimalMoney = BigDecimal.valueOf(0.00); } if (null == formatStr || formatStr.trim().equals("")) { formatStr = "¥#,##0.00"; } DecimalFormat df = (DecimalFormat) NumberFormat.getInstance(locale);// 设置使用美国数字格式(千分位) df.applyPattern(formatStr);// 设置应用金额格式 return df.format(bigDecimalMoney); } /** * 价格基金转换,除100,取整数 */ public static int getMoneyPoint(double amount1, double amount2) { int point = 0; if (amount1 + amount2 > 0.0) { point = (int) ((amount1 + amount2) / 100); } return point; } public static int getMoneyPointGive(double amount1, double amount2, double amount3) { int point = 0; if ((amount1 + amount2 - amount3) > 0.0) { point = (int) ((amount1 + amount2 - amount3) / 100); } return point; } public static String getMoneyStr(Long cent) { /* * Money money = new Money(); money.setCent(cent); return * money.toString(); */ return ""; } /** * 积分转换成价格,除100,取2位小数 */ public static double getPointToMoney(double amount1) { double point = 0.0; if (amount1 > 0.0) { point = ((amount1) / 100); } return point; } /** * 积分计算2数值相加整数结果 */ public static int integerAdd(double point1, double point2) { int point = 0; if ((point1 + point2) > 0.0) { point = (int) (point1 + point2); } return point; } /** * 积分计算2数值相乘整数结果 */ public static int integerMul(double point1, int point2) { int point = 0; String acount = "" + point1 * point2; if ((point1 * point2) > 0.0) { BigDecimal dd = new BigDecimal(acount).setScale(0, BigDecimal.ROUND_HALF_UP); point = dd.intValue(); } return point; } /** * 字符转换成浮点 * * @param money * @return */ public static double StringToDouble(String money) { return Double.parseDouble(money) / 100; } /** * 浮点金额显示 * * @param money * @return */ public static double DoubleMoney(Double money) { if (null == money) { return 0; } return money / 100; } /* * 自助缴费使用,金额/100 */ public static String getFormatMoneyByPay(Object money) { if (money == null || "".equals(money)) { money = "0"; } Double temp = Double.parseDouble(money.toString()) / 100; return getFormatMoney(temp.toString(), "#,##0.00"); } /* * 自助缴费使用,金额/100 */ public static String getFormatMoneyByPay2(Object money) { if (money == null || "".equals(money)) { money = "0"; } Double temp = Double.parseDouble(money.toString()) * 100; return getFormatMoney(temp.toString(), "#,##0.00"); } /** * 类目首页最近浏览商品 * * @return */ public static String getFormatMoneyCategory(Double money) { String formatMoney = getFormatMoney(money, "#,##0.00"); String[] array = StringUtils.split(formatMoney, "."); if (array[1].equals("00")) { return getFormatMoney(money, "#,##0"); } else if (array[1].endsWith("0")) { return getFormatMoney(money, "#,##0.0"); } else { return formatMoney; } } /** * 类目首页最近浏览商品 * * @return */ public static String getFormatMoneyCategory(String money) { try { return getFormatMoneyCategory(Double.parseDouble(money)); } catch (Exception e) { return ""; } } public static void main(String args[]) { // System.out.println(mul(add(5D, 663.85000000000002D), 1.01D)); System.out.println(getFormatMoneyCategory(2.20)); } /** * 计算拍卖商品冻结买家保证金 固定比例 * * @param bids * proportion以%为单位 * @return */ public static double getAuctionBidsMargin(double bids, double proportion) { try { BigDecimal marginBig = new BigDecimal("" + (bids * proportion / 100)).setScale(0, BigDecimal.ROUND_HALF_UP); int margin = marginBig.intValue(); if (margin <= 5) { return 5; } return margin; } catch (Exception e) { return 5; } } /** * Long 类型转换成BigDecimal * * @param l * @return */ public static BigDecimal toStrBig(Long l) { return new BigDecimal(l != null ? String.valueOf(l) : "0"); } public static BigDecimal toStrBig(Double l) { return new BigDecimal(l != null ? String.valueOf(l) : "0"); } public static BigDecimal toStrBig(Integer l) { return new BigDecimal(l != null ? String.valueOf(l) : "0"); }}
DateUtil
import java.text.ParsePosition;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;public class DateUtil { private static final ThreadLocal<SimpleDateFormat> threadLocal = new ThreadLocal<SimpleDateFormat>(); private static final Object object = new Object(); /** * 获取SimpleDateFormat * * @param pattern * 日期格式 * @return SimpleDateFormat对象 * @throws RuntimeException * 异常:非法日期格式 */ private static SimpleDateFormat getDateFormat(String pattern) throws RuntimeException { SimpleDateFormat dateFormat = threadLocal.get(); if (dateFormat == null) { synchronized (object) { dateFormat = new SimpleDateFormat(pattern); dateFormat.setLenient(false); threadLocal.set(dateFormat); } } dateFormat.applyPattern(pattern); return dateFormat; } /** * 获取日期中的某数值。如获取月份 * * @param date * 日期 * @param dateType * 日期格式 * @return 数值 */ private static int getInteger(Date date, int dateType) { int num = 0; Calendar calendar = Calendar.getInstance(); if (date != null) { calendar.setTime(date); num = calendar.get(dateType); } return num; } /** * 增加日期中某类型的某数值。如增加日期 * * @param date * 日期字符串 * @param dateType * 类型 * @param amount * 数值 * @return 计算后日期字符串 */ private static String addInteger(String date, int dateType, int amount) { String dateString = null; DateStyle dateStyle = getDateStyle(date); if (dateStyle != null) { Date myDate = StringToDate(date, dateStyle); myDate = addInteger(myDate, dateType, amount); dateString = DateToString(myDate, dateStyle); } return dateString; } /** * 增加日期中某类型的某数值。如增加日期 * * @param date * 日期 * @param dateType * 类型 * @param amount * 数值 * @return 计算后日期 */ private static Date addInteger(Date date, int dateType, int amount) { Date myDate = null; if (date != null) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(dateType, amount); myDate = calendar.getTime(); } return myDate; } /** * 获取精确的日期 * * @param timestamps * 时间long集合 * @return 日期 */ private static Date getAccurateDate(List<Long> timestamps) { Date date = null; long timestamp = 0; Map<Long, long[]> map = new HashMap<Long, long[]>(); List<Long> absoluteValues = new ArrayList<Long>(); if (timestamps != null && timestamps.size() > 0) { if (timestamps.size() > 1) { for (int i = 0; i < timestamps.size(); i++) { for (int j = i + 1; j < timestamps.size(); j++) { long absoluteValue = Math.abs(timestamps.get(i) - timestamps.get(j)); absoluteValues.add(absoluteValue); long[] timestampTmp = { timestamps.get(i), timestamps.get(j) }; map.put(absoluteValue, timestampTmp); } } // 有可能有相等的情况。如2012-11和2012-11-01。时间戳是相等的。此时minAbsoluteValue为0 // 因此不能将minAbsoluteValue取默认值0 long minAbsoluteValue = -1; if (!absoluteValues.isEmpty()) { minAbsoluteValue = absoluteValues.get(0); for (int i = 1; i < absoluteValues.size(); i++) { if (minAbsoluteValue > absoluteValues.get(i)) { minAbsoluteValue = absoluteValues.get(i); } } } if (minAbsoluteValue != -1) { long[] timestampsLastTmp = map.get(minAbsoluteValue); long dateOne = timestampsLastTmp[0]; long dateTwo = timestampsLastTmp[1]; if (absoluteValues.size() > 1) { timestamp = Math.abs(dateOne) > Math.abs(dateTwo) ? dateOne : dateTwo; } } } else { timestamp = timestamps.get(0); } } if (timestamp != 0) { date = new Date(timestamp); } return date; } /** * 判断字符串是否为日期字符串 * * @param date * 日期字符串 * @return true or false */ public static boolean isDate(String date) { boolean isDate = false; if (date != null) { if (getDateStyle(date) != null) { isDate = true; } } return isDate; } /** * 获取日期字符串的日期风格。失敗返回null。 * * @param date * 日期字符串 * @return 日期风格 */ public static DateStyle getDateStyle(String date) { DateStyle dateStyle = null; Map<Long, DateStyle> map = new HashMap<Long, DateStyle>(); List<Long> timestamps = new ArrayList<Long>(); for (DateStyle style : DateStyle.values()) { if (style.isShowOnly()) { continue; } Date dateTmp = null; if (date != null) { try { ParsePosition pos = new ParsePosition(0); dateTmp = getDateFormat(style.getValue()).parse(date, pos); if (pos.getIndex() != date.length()) { dateTmp = null; } } catch (Exception e) { } } if (dateTmp != null) { timestamps.add(dateTmp.getTime()); map.put(dateTmp.getTime(), style); } } Date accurateDate = getAccurateDate(timestamps); if (accurateDate != null) { dateStyle = map.get(accurateDate.getTime()); } return dateStyle; } /** * 将日期字符串转化为日期。失败返回null。 * * @param date * 日期字符串 * @return 日期 */ public static Date StringToDate(String date) { DateStyle dateStyle = getDateStyle(date); return StringToDate(date, dateStyle); } /** * 将日期字符串转化为日期。失败返回null。 * * @param date * 日期字符串 * @param pattern * 日期格式 * @return 日期 */ public static Date StringToDate(String date, String pattern) { Date myDate = null; if (date != null) { try { myDate = getDateFormat(pattern).parse(date); } catch (Exception e) { } } return myDate; } /** * 将日期字符串转化为日期。失败返回null。 * * @param date * 日期字符串 * @param dateStyle * 日期风格 * @return 日期 */ public static Date StringToDate(String date, DateStyle dateStyle) { Date myDate = null; if (dateStyle != null) { myDate = StringToDate(date, dateStyle.getValue()); } return myDate; } /** * 将日期转化为日期字符串。失败返回null。 * * @param date * 日期 * @param pattern * 日期格式 * @return 日期字符串 */ public static String DateToString(Date date, String pattern) { String dateString = null; if (date != null) { try { dateString = getDateFormat(pattern).format(date); } catch (Exception e) { } } return dateString; } /** * 将日期转化为日期字符串。失败返回null。 * * @param date * 日期 * @param dateStyle * 日期风格 * @return 日期字符串 */ public static String DateToString(Date date, DateStyle dateStyle) { String dateString = null; if (dateStyle != null) { dateString = DateToString(date, dateStyle.getValue()); } return dateString; } /** * 将日期字符串转化为另一日期字符串。失败返回null。 * * @param date * 旧日期字符串 * @param newPattern * 新日期格式 * @return 新日期字符串 */ public static String StringToString(String date, String newPattern) { DateStyle oldDateStyle = getDateStyle(date); return StringToString(date, oldDateStyle, newPattern); } /** * 将日期字符串转化为另一日期字符串。失败返回null。 * * @param date * 旧日期字符串 * @param newDateStyle * 新日期风格 * @return 新日期字符串 */ public static String StringToString(String date, DateStyle newDateStyle) { DateStyle oldDateStyle = getDateStyle(date); return StringToString(date, oldDateStyle, newDateStyle); } /** * 将日期字符串转化为另一日期字符串。失败返回null。 * * @param date * 旧日期字符串 * @param olddPattern * 旧日期格式 * @param newPattern * 新日期格式 * @return 新日期字符串 */ public static String StringToString(String date, String olddPattern, String newPattern) { return DateToString(StringToDate(date, olddPattern), newPattern); } /** * 将日期字符串转化为另一日期字符串。失败返回null。 * * @param date * 旧日期字符串 * @param olddDteStyle * 旧日期风格 * @param newParttern * 新日期格式 * @return 新日期字符串 */ public static String StringToString(String date, DateStyle olddDteStyle, String newParttern) { String dateString = null; if (olddDteStyle != null) { dateString = StringToString(date, olddDteStyle.getValue(), newParttern); } return dateString; } /** * 将日期字符串转化为另一日期字符串。失败返回null。 * * @param date * 旧日期字符串 * @param olddPattern * 旧日期格式 * @param newDateStyle * 新日期风格 * @return 新日期字符串 */ public static String StringToString(String date, String olddPattern, DateStyle newDateStyle) { String dateString = null; if (newDateStyle != null) { dateString = StringToString(date, olddPattern, newDateStyle.getValue()); } return dateString; } /** * 将日期字符串转化为另一日期字符串。失败返回null。 * * @param date * 旧日期字符串 * @param olddDteStyle * 旧日期风格 * @param newDateStyle * 新日期风格 * @return 新日期字符串 */ public static String StringToString(String date, DateStyle olddDteStyle, DateStyle newDateStyle) { String dateString = null; if (olddDteStyle != null && newDateStyle != null) { dateString = StringToString(date, olddDteStyle.getValue(), newDateStyle.getValue()); } return dateString; } /** * 增加日期的年份。失败返回null。 * * @param date * 日期 * @param yearAmount * 增加数量。可为负数 * @return 增加年份后的日期字符串 */ public static String addYear(String date, int yearAmount) { return addInteger(date, Calendar.YEAR, yearAmount); } /** * 增加日期的年份。失败返回null。 * * @param date * 日期 * @param yearAmount * 增加数量。可为负数 * @return 增加年份后的日期 */ public static Date addYear(Date date, int yearAmount) { return addInteger(date, Calendar.YEAR, yearAmount); } /** * 增加日期的月份。失败返回null。 * * @param date * 日期 * @param monthAmount * 增加数量。可为负数 * @return 增加月份后的日期字符串 */ public static String addMonth(String date, int monthAmount) { return addInteger(date, Calendar.MONTH, monthAmount); } /** * 增加日期的月份。失败返回null。 * * @param date * 日期 * @param monthAmount * 增加数量。可为负数 * @return 增加月份后的日期 */ public static Date addMonth(Date date, int monthAmount) { return addInteger(date, Calendar.MONTH, monthAmount); } /** * 增加日期的天数。失败返回null。 * * @param date * 日期字符串 * @param dayAmount * 增加数量。可为负数 * @return 增加天数后的日期字符串 */ public static String addDay(String date, int dayAmount) { return addInteger(date, Calendar.DATE, dayAmount); } /** * 增加日期的天数。失败返回null。 * * @param date * 日期 * @param dayAmount * 增加数量。可为负数 * @return 增加天数后的日期 */ public static Date addDay(Date date, int dayAmount) { return addInteger(date, Calendar.DATE, dayAmount); } /** * 增加日期的小时。失败返回null。 * * @param date * 日期字符串 * @param hourAmount * 增加数量。可为负数 * @return 增加小时后的日期字符串 */ public static String addHour(String date, int hourAmount) { return addInteger(date, Calendar.HOUR_OF_DAY, hourAmount); } /** * 增加日期的小时。失败返回null。 * * @param date * 日期 * @param hourAmount * 增加数量。可为负数 * @return 增加小时后的日期 */ public static Date addHour(Date date, int hourAmount) { return addInteger(date, Calendar.HOUR_OF_DAY, hourAmount); } /** * 增加日期的分钟。失败返回null。 * * @param date * 日期字符串 * @param minuteAmount * 增加数量。可为负数 * @return 增加分钟后的日期字符串 */ public static String addMinute(String date, int minuteAmount) { return addInteger(date, Calendar.MINUTE, minuteAmount); } /** * 增加日期的分钟。失败返回null。 * * @param date * 日期 * @param dayAmount * 增加数量。可为负数 * @return 增加分钟后的日期 */ public static Date addMinute(Date date, int minuteAmount) { return addInteger(date, Calendar.MINUTE, minuteAmount); } /** * 增加日期的秒钟。失败返回null。 * * @param date * 日期字符串 * @param dayAmount * 增加数量。可为负数 * @return 增加秒钟后的日期字符串 */ public static String addSecond(String date, int secondAmount) { return addInteger(date, Calendar.SECOND, secondAmount); } /** * 增加日期的秒钟。失败返回null。 * * @param date * 日期 * @param dayAmount * 增加数量。可为负数 * @return 增加秒钟后的日期 */ public static Date addSecond(Date date, int secondAmount) { return addInteger(date, Calendar.SECOND, secondAmount); } /** * 获取日期的年份。失败返回0。 * * @param date * 日期字符串 * @return 年份 */ public static int getYear(String date) { return getYear(StringToDate(date)); } /** * 获取日期的年份。失败返回0。 * * @param date * 日期 * @return 年份 */ public static int getYear(Date date) { return getInteger(date, Calendar.YEAR); } /** * 获取日期的月份。失败返回0。 * * @param date * 日期字符串 * @return 月份 */ public static int getMonth(String date) { return getMonth(StringToDate(date)); } /** * 获取日期的月份。失败返回0。 * * @param date * 日期 * @return 月份 */ public static int getMonth(Date date) { return getInteger(date, Calendar.MONTH) + 1; } /** * 获取日期的天数。失败返回0。 * * @param date * 日期字符串 * @return 天 */ public static int getDay(String date) { return getDay(StringToDate(date)); } /** * 获取日期的天数。失败返回0。 * * @param date * 日期 * @return 天 */ public static int getDay(Date date) { return getInteger(date, Calendar.DATE); } /** * 获取日期的小时。失败返回0。 * * @param date * 日期字符串 * @return 小时 */ public static int getHour(String date) { return getHour(StringToDate(date)); } /** * 获取日期的小时。失败返回0。 * * @param date * 日期 * @return 小时 */ public static int getHour(Date date) { return getInteger(date, Calendar.HOUR_OF_DAY); } /** * 获取日期的分钟。失败返回0。 * * @param date * 日期字符串 * @return 分钟 */ public static int getMinute(String date) { return getMinute(StringToDate(date)); } /** * 获取日期的分钟。失败返回0。 * * @param date * 日期 * @return 分钟 */ public static int getMinute(Date date) { return getInteger(date, Calendar.MINUTE); } /** * 获取日期的秒钟。失败返回0。 * * @param date * 日期字符串 * @return 秒钟 */ public static int getSecond(String date) { return getSecond(StringToDate(date)); } /** * 获取日期的秒钟。失败返回0。 * * @param date * 日期 * @return 秒钟 */ public static int getSecond(Date date) { return getInteger(date, Calendar.SECOND); } /** * 获取日期 。默认yyyy-MM-dd格式。失败返回null。 * * @param date * 日期字符串 * @return 日期 */ public static String getDate(String date) { return StringToString(date, DateStyle.YYYY_MM_DD); } /** * 获取日期。默认yyyy-MM-dd格式。失败返回null。 * * @param date * 日期 * @return 日期 */ public static String getDate(Date date) { return DateToString(date, DateStyle.YYYY_MM_DD); } /** * 获取日期的时间。默认HH:mm:ss格式。失败返回null。 * * @param date * 日期字符串 * @return 时间 */ public static String getTime(String date) { return StringToString(date, DateStyle.HH_MM_SS); } /** * 获取日期的时间。默认HH:mm:ss格式。失败返回null。 * * @param date * 日期 * @return 时间 */ public static String getTime(Date date) { return DateToString(date, DateStyle.HH_MM_SS); } /** * 获取日期的星期。失败返回null。 * * @param date * 日期字符串 * @return 星期 */ public static Week getWeek(String date) { Week week = null; DateStyle dateStyle = getDateStyle(date); if (dateStyle != null) { Date myDate = StringToDate(date, dateStyle); week = getWeek(myDate); } return week; } /** * 获取日期的星期。失败返回null。 * * @param date * 日期 * @return 星期 */ public static Week getWeek(Date date) { Week week = null; Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int weekNumber = calendar.get(Calendar.DAY_OF_WEEK) - 1; switch (weekNumber) { case 0: week = Week.SUNDAY; break; case 1: week = Week.MONDAY; break; case 2: week = Week.TUESDAY; break; case 3: week = Week.WEDNESDAY; break; case 4: week = Week.THURSDAY; break; case 5: week = Week.FRIDAY; break; case 6: week = Week.SATURDAY; break; } return week; } /** * 获取两个日期相差的天数 * * @param date * 日期字符串 * @param otherDate * 另一个日期字符串 * @return 相差天数。如果失败则返回-1 */ public static int getIntervalDays(String date, String otherDate) { return getIntervalDays(StringToDate(date), StringToDate(otherDate)); } /** * @param date * 日期 * @param otherDate * 另一个日期 * @return 相差天数。如果失败则返回-1 */ public static int getIntervalDays(Date date, Date otherDate) { int num = -1; Date dateTmp = DateUtil.StringToDate(DateUtil.getDate(date), DateStyle.YYYY_MM_DD); Date otherDateTmp = DateUtil.StringToDate(DateUtil.getDate(otherDate), DateStyle.YYYY_MM_DD); if (dateTmp != null && otherDateTmp != null) { long time = Math.abs(dateTmp.getTime() - otherDateTmp.getTime()); num = (int) (time / (24 * 60 * 60 * 1000)); } return num; } /** * @param date * 日期 * @param otherDate * 另一个日期 * @return 相差天数(日期早的减去日期晚的可为负数)。如果失败则返回-1 */ public static int getIntervalDaysAbleNegative(Date date, Date otherDate) { int num = -1; Date dateTmp = DateUtil.StringToDate(DateUtil.getDate(date), DateStyle.YYYY_MM_DD); Date otherDateTmp = DateUtil.StringToDate(DateUtil.getDate(otherDate), DateStyle.YYYY_MM_DD); if (dateTmp != null && otherDateTmp != null) { long time =dateTmp.getTime() - otherDateTmp.getTime(); num = (int) (time / (24 * 60 * 60 * 1000)); } return num; }}
0 0
- 记录Util类
- Java.util.Math类的API记录
- 日期操作UTIL记录
- 错误记录--java.util.NoSuchElementException
- java.util.logging 记录日志
- java.util.concurrent自己记录
- 异常记录——java.util.ConcurrentModificationException
- Java记录 -62- java.util.Collections
- Java之util类
- Java-util类详解
- java.util.scanner类
- java.util.Properties类
- Java之util类
- java.util.Properties类
- 类 java.util.Properties
- java.util.Scanner类
- java.util.Arrays类
- java.util.Scanner类
- 快速排序(Java)
- Mysql乱码问题; 在java中,向数据库中插入数据出现乱码
- Android开发之使用MediaRecorder录制声音
- java、javaw和javaws
- nodejs module.exports和exports的区别和联系
- 记录Util类
- 62. Unique Paths
- 免费的IT类技术书籍大全
- leetcode 104. Maximum Depth of Binary Tree
- Android Studio Error:(6, 8) 错误: 编码GBK的不可映射字符
- CJSON数据的解析和合成示例
- MFC 任意分割窗口的小结(CSplitterWndEx)
- 关于 com.wonderkiln.blurkit.BlurLayout 中 blk_fps 不存在 的问题
- 学习java websocket的