新手必备的常用代码片段整理(三)

来源:互联网 发布:淘宝卖家5天不发货 编辑:程序博客网 时间:2024/05/22 14:23

以下内容来自多个开源项目的整理和自己的项目积累

  • px-dp转换
  • px-sp转换
  • 把一个毫秒数转化成时间字符串
  • 把日期毫秒转化为字符串
  • 把日期毫秒转化为字符串文件名
  • 转换当前时间为易用时间格式
  • 字符串解析成毫秒数
  • 手机号码正则
  • 邮箱正则
  • px-dp转换

px-dp转换

public static int dip2px(Context context, float dpValue) {    final float scale = context.getResources().getDisplayMetrics().density;    return (int) (dpValue * scale + 0.5f);}public static int px2dip(Context context, float pxValue) {    final float scale = context.getResources().getDisplayMetrics().density;    return (int) (pxValue / scale + 0.5f);}

px-sp转换

public static int px2sp(Context context, float pxValue) {        final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;        return (int) (pxValue / fontScale + 0.5f);    }public static int sp2px(Context context, float spValue) {        final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;        return (int) (spValue * fontScale + 0.5f);    }

把一个毫秒数转化成时间字符串

1、格式为小时/分/秒/毫秒(如:24903600 –> 06小时55分03秒600毫秒)

/**     * @param millis     *            要转化的毫秒数。     * @param isWhole     *            是否强制全部显示小时/分/秒/毫秒。     * @param isFormat     *            时间数字是否要格式化,如果true:少位数前面补全;如果false:少位数前面不补全。     * @return 返回时间字符串:小时/分/秒/毫秒的格式(如:24903600 --> 06小时55分03秒600毫秒)。     */    public static String millisToString(long millis, boolean isWhole,            boolean isFormat) {        String h = "";        String m = "";        String s = "";        String mi = "";        if (isWhole) {            h = isFormat ? "00小时" : "0小时";            m = isFormat ? "00分" : "0分";            s = isFormat ? "00秒" : "0秒";            mi = isFormat ? "00毫秒" : "0毫秒";        }        long temp = millis;        long hper = 60 * 60 * 1000;        long mper = 60 * 1000;        long sper = 1000;        if (temp / hper > 0) {            if (isFormat) {                h = temp / hper < 10 ? "0" + temp / hper : temp / hper + "";            } else {                h = temp / hper + "";            }            h += "小时";        }        temp = temp % hper;        if (temp / mper > 0) {            if (isFormat) {                m = temp / mper < 10 ? "0" + temp / mper : temp / mper + "";            } else {                m = temp / mper + "";            }            m += "分";        }        temp = temp % mper;        if (temp / sper > 0) {            if (isFormat) {                s = temp / sper < 10 ? "0" + temp / sper : temp / sper + "";            } else {                s = temp / sper + "";            }            s += "秒";        }        temp = temp % sper;        mi = temp + "";        if (isFormat) {            if (temp < 100 && temp >= 10) {                mi = "0" + temp;            }            if (temp < 10) {                mi = "00" + temp;            }        }        mi += "毫秒";        return h + m + s + mi;    }

2、格式为小时/分/秒/毫秒(如:24903600 –> 06小时55分03秒)。

/**     *     * @param millis     *            要转化的毫秒数。     * @param isWhole     *            是否强制全部显示小时/分/秒/毫秒。     * @param isFormat     *            时间数字是否要格式化,如果true:少位数前面补全;如果false:少位数前面不补全。     * @return 返回时间字符串:小时/分/秒/毫秒的格式(如:24903600 --> 06小时55分03秒)。     */    public static String millisToStringMiddle(long millis, boolean isWhole,            boolean isFormat) {        return millisToStringMiddle(millis, isWhole, isFormat, "小时", "分钟", "秒");    }    public static String millisToStringMiddle(long millis, boolean isWhole,            boolean isFormat, String hUnit, String mUnit, String sUnit) {        String h = "";        String m = "";        String s = "";        if (isWhole) {            h = isFormat ? "00" + hUnit : "0" + hUnit;            m = isFormat ? "00" + mUnit : "0" + mUnit;            s = isFormat ? "00" + sUnit : "0" + sUnit;        }        long temp = millis;        long hper = 60 * 60 * 1000;        long mper = 60 * 1000;        long sper = 1000;        if (temp / hper > 0) {            if (isFormat) {                h = temp / hper < 10 ? "0" + temp / hper : temp / hper + "";            } else {                h = temp / hper + "";            }            h += hUnit;        }        temp = temp % hper;        if (temp / mper > 0) {            if (isFormat) {                m = temp / mper < 10 ? "0" + temp / mper : temp / mper + "";            } else {                m = temp / mper + "";            }            m += mUnit;        }        temp = temp % mper;        if (temp / sper > 0) {            if (isFormat) {                s = temp / sper < 10 ? "0" + temp / sper : temp / sper + "";            } else {                s = temp / sper + "";            }            s += sUnit;        }        return h + m + s;    }

3、把一个毫秒数转化成时间字符串。格式为小时/分/秒/毫秒(如:24903600 –> 06小时55分钟)

把日期毫秒转化为字符串

/**     *     * @param millis     *            要转化的毫秒数。     * @param isWhole     *            是否强制全部显示小时/分。     * @param isFormat     *            时间数字是否要格式化,如果true:少位数前面补全;如果false:少位数前面不补全。     * @return 返回时间字符串:小时/分/秒/毫秒的格式(如:24903600 --> 06小时55分钟)。     */    public static String millisToStringShort(long millis, boolean isWhole,            boolean isFormat) {        String h = "";        String m = "";        if (isWhole) {            h = isFormat ? "00小时" : "0小时";            m = isFormat ? "00分钟" : "0分钟";        }        long temp = millis;        long hper = 60 * 60 * 1000;        long mper = 60 * 1000;        long sper = 1000;        if (temp / hper > 0) {            if (isFormat) {                h = temp / hper < 10 ? "0" + temp / hper : temp / hper + "";            } else {                h = temp / hper + "";            }            h += "小时";        }        temp = temp % hper;        if (temp / mper > 0) {            if (isFormat) {                m = temp / mper < 10 ? "0" + temp / mper : temp / mper + "";            } else {                m = temp / mper + "";            }            m += "分钟";        }        return h + m;    }

把日期毫秒转化为字符串

     * @param millis     *            要转化的日期毫秒数。     * @param pattern     *            要转化为的字符串格式(如:yyyy-MM-dd HH:mm:ss)。     * @return 返回日期字符串。     */    public static String millisToStringDate(long millis, String pattern) {        SimpleDateFormat format = new SimpleDateFormat(pattern,                Locale.getDefault());        return format.format(new Date(millis));    }

把日期毫秒转化为字符串(文件名)

/**     * @param millis     *            要转化的日期毫秒数。     * @param pattern     *            要转化为的字符串格式(如:yyyy-MM-dd HH:mm:ss)。     * @return 返回日期字符串(yyyy_MM_dd_HH_mm_ss)。     */    public static String millisToStringFilename(long millis, String pattern) {        String dateStr = millisToStringDate(millis, pattern);        return dateStr.replaceAll("[- :]", "_");    }

转换当前时间为易用时间格式

1小时内用,多少分钟前; 超过1小时,显示时间而无日期; 如果是昨天,则显示昨天 超过昨天再显示日期; 超过1年再显示年。

public static long oneHourMillis = 60 * 60 * 1000; // 一小时的毫秒数public static long oneDayMillis = 24 * oneHourMillis; // 一天的毫秒数public static long oneYearMillis = 365 * oneDayMillis; // 一年的毫秒数public static String millisToLifeString(long millis) {        long now = System.currentTimeMillis();        long todayStart = string2Millis(millisToStringDate(now, "yyyy-MM-dd"),                "yyyy-MM-dd");        // 一小时内        if (now - millis <= oneHourMillis && now - millis > 0l) {            String m = millisToStringShort(now - millis, false, false);            return "".equals(m) ? "1分钟内" : m + "前";        }         // 大于今天开始开始值,小于今天开始值加一天(即今天结束值)        if (millis >= todayStart && millis <= oneDayMillis + todayStart) {            return "今天 " + millisToStringDate(millis, "HH:mm");        }         // 大于(今天开始值减一天,即昨天开始值)        if (millis > todayStart - oneDayMillis) {            return "昨天 " + millisToStringDate(millis, "HH:mm");        }        long thisYearStart = string2Millis(millisToStringDate(now, "yyyy"),                "yyyy");         // 大于今天小于今年        if (millis > thisYearStart) {            return millisToStringDate(millis, "MM月dd日 HH:mm");        }        return millisToStringDate(millis, "yyyy年MM月dd日 HH:mm");    }

字符串解析成毫秒数

public static long string2Millis(String str, String pattern) {        SimpleDateFormat format = new SimpleDateFormat(pattern,                Locale.getDefault());        long millis = 0;        try {            millis = format.parse(str).getTime();        } catch (ParseException e) {            Log.e("TAG", e.getMessage());        }        return millis;    }

手机号码正则

public static final String REG_PHONE_CHINA = "^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$";

邮箱正则

public static final String REG_EMAIL = "\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";
0 0
原创粉丝点击