zoukankan      html  css  js  c++  java
  • MyFormat 幫助類


    package com.utms.common.util;

    import java.math.BigDecimal;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;

    public class MyFormat {

    /******************************************* 格式化数据类型方法开始 *****************************************************/

    /**
    * 判断字符串是否为空或长度为0
    *
    * @param str字符串
    * @return 是否为空或长度为0
    */
    public static boolean isStrNull(String str) {
    return str == null || str.trim().length() == 0;
    }

    /**
    * 判断字符串是否为空或长度为0
    *
    * @param str 字符串
    * @return 是否为空或长度为0
    */
    public static boolean isStrNull(Object str) {
    return str == null || str.toString().trim().length() == 0;
    }

    /**
    * 判断Long类型数字是否为null或者为0
    * @param digitalLong 数字
    * @return 是否为空或值为0
    */
    public static boolean isLongNullOrZero(Long digitalLong) {
    return digitalLong == null || digitalLong.equals(ConstantUtil.ZERO);
    }

    /**
    * 输入文本s,如果不为null,则输出s;如果为null,则输出sub
    * @param s 要格式化的字符串
    * @param sub 替代的字符串
    * @return 如果不为null,则输出s;如果为null,则输出sub
    */
    public static String formatStr(Object s, String sub) {
    return isStrNull(s) ? sub : s.toString().trim();
    }

    /**
    * 输入文本s,如果不为null,则输出s;如果为null,则输出""
    * @param s 要格式化的字符串
    * @return 如果不为null,则输出s;如果为null,则输出""
    */
    public static String formatStr(Object s) {
    return formatStr(s, "");
    }

    /**
    * 输入String类型转化为Long类型
    * @param s
    * @return
    */
    public static Long parseLong(String s){
    return isStrNull(s) ? 0 : Long.parseLong(s);
    }
    /**
    * 输入Long类型,若为null,则转化为0
    * @param l
    * @return
    */
    public static Long parserLong(Long l){
    return l==null?0:l;
    }
    /**
    * 查找字符串中find的数量
    * @param source 字符串
    * @param find 要查找的字符串
    * @return find数量
    */
    public static int matchStrCount(String source, String find) {
    if (MyFormat.isStrNull(source) || MyFormat.isStrNull(find))
    return 0;
    String pattern = "(" + find + "){1}";
    Pattern p = Pattern.compile(pattern);
    Matcher m = p.matcher(source);
    int i = 0;
    while (m.find()) {
    i++;
    }
    return i;
    }

    /******************************************* 格式化数据类型方法结束 ************************************************/

    /******************************************* 日期方法开始 *****************************************************/

    /**
    * 获取Calendar
    * @param date YYYY-MM-dd
    * @return 如果有异常,则返回今天
    */
    public static Calendar getCalendar(String date) {
    return getCalendar(date, "yyyy-MM-dd");
    }

    /**
    * 获取Calendar
    * @param date
    * @param format date的格式
    * @return
    */
    public static Calendar getCalendar(String date, String format) {
    return getCalendar(date, new SimpleDateFormat(format));
    }

    /**
    * 获取Calendar
    * @param date
    * @param format date的格式
    * @return
    */
    public static Calendar getCalendar(String date, SimpleDateFormat format) {
    Calendar calendar = Calendar.getInstance();
    if (format != null) {
    try {
    calendar.setTime(format.parse(date));
    } catch (Exception e) {
    }
    }
    return calendar;
    }

    /**
    * 输入Date,输出YYYY-MM-dd
    * @param date YYYY-MM-DD
    * @return YYYY-MM-dd
    */
    public final static String getDate(Date date) {
    if (date == null) {
    return "";
    }
    return formatDate(date,"yyyy-MM-dd");
    }

    /**
    * 根据DateFormat格式化日期
    *
    * @param date
    * @param DateFormat
    * @return
    */
    public final static String formatDate(Date date, String DateFormat) {
    if (date == null)
    return "";
    String strDate = null;
    SimpleDateFormat df = new SimpleDateFormat(DateFormat);
    try {
    strDate = df.format(date);
    } catch (Exception e) {
    }
    return strDate;
    }

    /**
    * 获取今天(日期)
    *
    * @return yyyy-MM-dd
    */
    public final static String getToday() {
    Date date = new Date();
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    return df.format(date);
    }

    /**
    * 获取明天(日期)
    *
    * @return 明天日期(YYYY-MM-DD)
    */
    public final static String getTomorrow() {
    return getDate(1);
    }

    /**
    * 获取昨天(日期)
    *
    * @return 昨天日期(YYYY-MM-DD)
    */
    public final static String getYesterday() {
    return getDate(-1);
    }

    /**
    * 获取离days天的年月日
    *
    * @param days 负数表示历史日期,正数表示未来日期
    * @return YYYY-MM-dd
    */
    public final static String getDate(int days) {
    Calendar c = Calendar.getInstance();
    c.add(Calendar.DAY_OF_YEAR, days);
    return getDate(c.getTime());
    }

    /**
    * 获取上个月的今天
    * @param date
    * @return YYYY-MM-dd
    */
    public final static String getDayInLastMonth() {
    Calendar c = Calendar.getInstance();
    c.add(Calendar.MONTH, -1);
    return getDate(c.getTime());
    }

    /**
    * 获取前七日的今天
    * @param date
    * @return YYYY-MM-dd
    */
    public final static String getDayInLastWeek() {
    Calendar c = Calendar.getInstance();
    c.add(Calendar.WEEK_OF_YEAR, -1);
    return getDate(c.getTime());
    }

    /**
    * 获取今后七日
    * @param date
    * @return YYYY-MM-dd
    */
    public final static String getDayInNextWeek() {
    Calendar c = Calendar.getInstance();
    c.add(Calendar.WEEK_OF_YEAR, 1);
    return getDate(c.getTime());
    }

    /**
    * 获取本月1日
    * @return
    */
    public final static String getFirstDayInThisMonth() {
    return getFirstDayInMonth(getToday());
    }

    /**
    * 获取本月最后一日
    * @return
    */
    public final static String getLastDayInThisMonth() {
    return getLastDayInMonth(getToday());
    }
    /**
    * 获取上月1日
    * @return
    */
    public final static String getFirstDayInLastMonth() {
    return getFirstDayInLastMonth(getToday());
    }

    /**
    * 获取上月最后一日
    * @return
    */
    public final static String getLastDayInLastMonth() {
    return getLastDayInLastMonth(getToday());
    }

    /**
    * 获取下月1日
    * @return
    */
    public final static String getFirstDayInNextMonth() {
    return getFirstDayInNextMonth(getToday());
    }

    /**
    * 获取下月最后一日
    * @return
    */
    public final static String getLastDayInNextMonth() {
    return getLastDayInNextMonth(getToday());
    }

    /**
    * 获取输入日期当月1日
    * @param date yyyy-mm-dd
    * @return
    */
    public final static String getFirstDayInMonth(String date) {
    if (date == null || date.length() != 10)
    return "";
    return date.substring(0, 7) + "-01";
    }

    /**
    * 获取输入日期的下月1日
    * @param date yyyy-mm-dd
    * @return
    */
    public final static String getFirstDayInNextMonth(String date) {
    if (date == null || date.length() != 10)
    return "";
    String lastDay = "";
    try {
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(df.parse(date));
    calendar.add(Calendar.MONTH, 1);
    lastDay = df.format(calendar.getTime());
    } catch (Exception e) {
    }
    return lastDay.substring(0, 7) + "-01";
    }

    /**
    * 获取输入日期的下月最后一日
    * @param date yyyy-mm-dd
    * @return
    */
    public final static String getLastDayInNextMonth(String date) {
    if (date == null || date.length() != 10)
    return "";
    try {
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(df.parse(date.substring(0, 7) + "-01"));
    calendar.add(Calendar.MONTH, 2);
    calendar.add(Calendar.DAY_OF_MONTH, -1);
    date = df.format(calendar.getTime());
    } catch (Exception e) {
    }
    return date;
    }

    /**
    * 获取指定年月最后一日,yyyy-MM-dd(如输入2010,1,返回2010-01-31)
    * @param year 年份
    * @prama month 第Y月
    * @return
    */
    public final static String getLastDayInMonth(int year, int month) {
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    Calendar c = Calendar.getInstance();
    c.set(Calendar.YEAR, year);
    c.set(Calendar.MONTH, month);
    c.set(Calendar.DAY_OF_MONTH, 1);
    c.add(Calendar.DAY_OF_MONTH, -1);
    return df.format(c.getTime());
    }

    /**
    * 获取输入日期当月最后一日
    * @param date yyyy-mm-dd
    * @return
    */
    public final static String getLastDayInMonth(String date) {
    if (date == null || date.length() != 10)
    return "";
    try {
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(df.parse(date.substring(0, 7) + "-01"));
    calendar.add(Calendar.MONTH, 1);
    calendar.add(Calendar.DAY_OF_MONTH, -1);
    date = df.format(calendar.getTime());
    } catch (Exception e) {
    }
    return date;
    }

    /**
    * 获取输入日期的上月最后一日
    * @param date yyyy-mm-dd
    * @return
    */
    public final static String getLastDayInLastMonth(String date) {
    if (date == null || date.length() != 10)
    return "";
    try {
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(df.parse(date.substring(0, 7) + "-01"));
    calendar.add(Calendar.DAY_OF_MONTH, -1);
    date = df.format(calendar.getTime());
    } catch (Exception e) {
    }
    return date;
    }

    /**
    * 获取输入日期的上月1日
    * @param date yyyy-mm-dd
    * @return
    */
    public final static String getFirstDayInLastMonth(String date) {
    if (date == null || date.length() != 10)
    return "";
    String lastDay = "";
    try {
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(df.parse(date));
    calendar.add(Calendar.MONTH, -1);
    lastDay = df.format(calendar.getTime());
    } catch (Exception e) {
    }
    return lastDay.substring(0, 7) + "-01";
    }

    /**
    * 获取今年第1天
    * @return
    */
    public final static String getFirstDayInThisYear() {
    return getFirstDayInThisYear(getToday());
    }

    /**
    * 获取输入日期的当年第1天
    * @param date yyyy-mm-dd
    * @return
    */
    public final static String getFirstDayInThisYear(String date) {
    if (date == null || date.length() != 10)
    return "";
    return date.substring(0, 4) + "-01-01";
    }

    /**
    * 获取输入日期过去days天的年月日
    * @param days 负数表示历史日期,正数表示未来日期
    * @return YYYY-MM-dd
    */
    public final static String getDate(int days, String date) {
    if (date == null || date.length() != 10)
    return "";
    try {
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    Calendar c = Calendar.getInstance();
    c.setTime(df.parse(date));
    c.add(Calendar.DAY_OF_YEAR, days);
    date = df.format(c.getTime());
    } catch (Exception e) {
    }
    return date;
    }

    /******************************************* 日期方法结束 *****************************************************/

    /******************************************* 金额方法开始 *****************************************************/

    /** 金额为分的格式 */
    public static final String CURRENCY_FEN_REGEX = "\-?[0-9]+";

    /**
    * 将分为单位的转换为元并返回金额格式的字符串 (除100)
    *
    * @param money
    * @return
    * @throws Exception
    */
    public static String changeF2Y(Long money) throws Exception {
    if (!money.toString().matches(CURRENCY_FEN_REGEX)) {
    throw new Exception("金额格式有误");
    }
    int flag = 0;
    String s_money = formatStr(money);
    if (s_money.charAt(0) == '-') {
    flag = 1;
    s_money = s_money.substring(1);
    }
    StringBuffer result = new StringBuffer();
    if (s_money.length() == 1) {
    result.append("0.0").append(s_money);
    } else if (s_money.length() == 2) {
    result.append("0.").append(s_money);
    } else {
    String intString = s_money.substring(0, s_money.length() - 2);//整数部分
    for (int i = 1; i <= intString.length(); i++) {
    if ((i - 1) % 3 == 0 && i != 1) {//金额逗号分隔符
    result.append(",");
    }
    result.append(intString.substring(intString.length() - i,intString.length() - i + 1));
    }
    result.reverse().append(".").append(s_money.substring(s_money.length() - 2));
    }
    if (flag == 1) {
    return "-" + result.toString();
    } else {
    return result.toString();
    }
    }

    /**
    * 将分为单位的转换为元 (除100)
    * @author SunHanbin
    * @param money
    * @return
    * @throws Exception
    */
    public static String changeF2Y(String money) throws Exception {
    if (!money.matches(CURRENCY_FEN_REGEX)) {
    throw new Exception("金额格式有误");
    }
    return BigDecimal.valueOf(Long.valueOf(money)).divide(new BigDecimal(100)).toString();
    }

    /**
    * 将元为单位的转换为分 (乘100)
    * @author SunHanbin
    * @param money
    * @return
    */
    public static String changeY2F(Long money) {
    return BigDecimal.valueOf(money).multiply(new BigDecimal(100)).toString();
    }

    /**
    * 将元为单位的转换为分 替换小数点,支持以逗号区分的金额
    * @author SunHanbin
    * @param money
    * @return
    */
    public static String changeY2F(String money) {
    String currency = money.replaceAll("\$|\¥|\,", ""); // 处理包含, ¥ 或者$的金额
    int index = currency.indexOf(".");
    int length = currency.length();
    Long amLong = 0l;
    if (index == -1) {
    amLong = Long.valueOf(currency + "00");
    } else if (length - index >= 3) {
    amLong = Long.valueOf((currency.substring(0, index + 3)).replace(".", ""));
    } else if (length - index == 2) {
    amLong = Long.valueOf((currency.substring(0, index + 2)).replace(".", "") + 0);
    } else {
    amLong = Long.valueOf((currency.substring(0, index + 1)).replace(".", "")+ "00");
    }
    return amLong.toString();
    }

    /******************************************* 金额方法结束 *****************************************************/


    }

  • 相关阅读:
    与IBM的Lin Sun关于Istio 1.0和微服务的问答
    与IBM的Lin Sun关于Istio 1.0和微服务的问答
    与IBM的Lin Sun关于Istio 1.0和微服务的问答
    各种排序算法汇总
    更改一个链接的文本、URL 以及 target
    使用javascript中读取Xml文件做成的一个二级联动菜单
    HTML DOM 实例
    HTML DOM
    js中邦定事件与解绑支持匿名函数
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
  • 原文地址:https://www.cnblogs.com/--Candice/p/3630430.html
Copyright © 2011-2022 走看看