All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.github.mavenreposs.php.functions.PHPFunctions Maven / Gradle / Ivy

There is a newer version: 1.1.1
Show newest version
package io.github.mavenreposs.php.functions;

import org.apache.commons.lang3.RandomUtils;
import org.apache.commons.lang3.StringUtils;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

@SuppressWarnings("unused")
public class PHPFunctions {

    private PHPFunctions() {
    }

    /**
     * @param separator 分割符
     * @param string 输入字符串
     * @return 分割后数组
     */
    public static String[] explode(String separator, String string) {
        return StringUtils.splitByWholeSeparatorPreserveAllTokens(string, separator);
    }

    /**
     * @param separator 分割符
     * @param string 输入字符串
     * @param limit 限制大小
     * @return 分割后数组
     */
    public static String[] explode(String separator, String string, int limit) {
        return StringUtils.splitByWholeSeparatorPreserveAllTokens(string, separator, limit);
    }

    /**
     * @param separator 分割符
     * @param values 合并数组
     * @return 字符串
     */
    public static String implode(String separator, String[] values) {
        return StringUtils.join(values, separator);
    }

    /**
     * @param haystack 字符串
     * @param needle 字符串
     * @return int
     */
    public static int strrpos(String haystack, String needle) {
        return StringUtils.lastIndexOfAny(haystack, needle);
    }

    /**
     * @param haystack 字符串
     * @param needle 字符串
     * @return int
     */
    public static int strpos(String haystack, String needle) {
        return StringUtils.indexOfAny(haystack, needle);
    }

    /**
     * 返回字符串的子串
     * @param string 截取字符串
     * @param start 开始位置
     * @param length 截取长度
     * @return String
     */
    public static String substr(String string, int start, int length) {
        return "";
    }

    /**
     * 将首字母转换成大小字母
     *
     * @param string 字符串
     * @return 字符串
     */
    public static String ucwords(String string) {
        return string.substring(0, 1).toUpperCase() + string.substring(1);
    }

    /**
     * 使一个字符串的第一个字符小写
     *
     * @param string 输入的字符串。
     * @return 返回第一个字母小写的 str ,如果是字母的话。
     */
    public static String lcfirst(String string) {
        return string.substring(0, 1).toLowerCase() + string.substring(1);
    }

    /**
     * @param string 字符串
     * @return 字符串
     */
    public static String trim(String string) {
        return StringUtils.trim(string);
    }

    /**
     * @param string 字符串
     * @return 字符串
     */
    public static String ltrim(String string) {
        return StringUtils.stripStart(string, null);
    }

    /**
     * @param string 字符串
     * @param stripChars 字符串
     * @return 字符串
     */
    public static String ltrim(String string, final String stripChars) {
        return StringUtils.stripStart(string, stripChars);
    }

    /**
     * @param string 字符串
     * @return 字符串
     */
    public static String rtrim(String string) {
        return StringUtils.stripEnd(string, null);
    }

    /**
     * @param string 字符串
     * @param stripChars 字符串
     * @return 字符串
     */
    public static String rtrim(String string, final String stripChars) {
        return StringUtils.stripEnd(string, stripChars);
    }

    /**
     * 舍去法取整
     *
     * @param value 要取整的数字
     * @return 返回不大于 value 的最接近的整数,舍去小数部分取整。
     */
    public static Double floor(double value) {
        return Math.floor(value);
    }

    /**
     * 进一法取整
     *
     * @param value 要进一法取整的值
     * @return 返回不小于 value 的下一个整数,value 如果有小数部分则进一位。
     */
    public static Double ceil(double value) {
        return Math.ceil(value);
    }

    /**
     * 对浮点数进行四舍五入
     *
     * @param value 要处理的值。
     * @return 返回将 val (十进制小数点后数字的数目)进行四舍五入的结果。
     */
    public static Integer round(float value) {
        return Math.round(value);
    }

    /**
     * 对浮点数进行四舍五入
     *
     * @param value 要处理的值。
     * @return 返回将 val (十进制小数点后数字的数目)进行四舍五入的结果。
     */
    public static Long round(double value) {
        return Math.round(value);
    }

    /**
     * 获得系统当前时间区的时间戳 (微秒)
     * @return 13位时间戳 (微秒)
     */
    public static long microtime() {
        TimeZone tz = TimeZone.getDefault();
        Calendar cal = Calendar.getInstance(tz);
        Date date = cal.getTime();
        return date.getTime();
    }

    /**
     * 获得系统当前时间区的时间戳
     * @return 10位时间戳
     */
    public static int time() {
        OffsetDateTime now = OffsetDateTime.now();
        return (int) now.toEpochSecond();
    }

    /**
     * 获得JAVA的DATE时间转的时间戳
     * @param date 指定日期
     * @return 10位时间戳
     */
    public static int time(Date date) {
        return (int) (date.getTime() / 1000);
    }

    /**
     * 获得当前格林威治时间的时间戳
     * @return 10位时间戳
     */
    public static int gmtime() {
        OffsetDateTime now = OffsetDateTime.now(ZoneOffset.UTC);
        return (int) now.toEpochSecond();
    }

    /**
     * 生成一个0时区日期的GMT时间戳
     *
     * @return int
     */
    public static int mktime() {
        return gmtime();
    }

    /**
     * 生成一个0时区日期的GMT时间戳
     *
     * @param hour 小时数
     * @return int
     */
    public static int mktime(int hour) {
        GetDate getDate = getdate(gmtime());
        return mktime(hour, getDate.getMinutes(), getDate.getSeconds(), getDate.getMon(), getDate.getMday(), getDate.getYear());
    }

    /**
     * 生成一个0时区日期的GMT时间戳
     *
     * @param hour 小时数
     * @param minute 分钟数
     * @return int
     */
    public static int mktime(int hour, int minute) {
        GetDate getDate = getdate(gmtime());
        return mktime(hour, minute, getDate.getSeconds(), getDate.getMon(), getDate.getMday(), getDate.getYear());
    }

    /**
     * 生成一个0时区日期的GMT时间戳
     *
     * @param hour 小时数
     * @param minute 分钟数
     * @param second 秒数(一分钟之内)
     * @return int
     */
    public static int mktime(int hour, int minute, int second) {
        GetDate getDate = getdate(gmtime());
        return mktime(hour, minute, second, getDate.getMon(), getDate.getMday(), getDate.getYear());
    }

    /**
     * 生成一个0时区日期的GMT时间戳
     *
     * @param hour 小时数
     * @param minute 分钟数
     * @param second 秒数(一分钟之内)
     * @param month 月份数
     * @return int
     */
    public static int mktime(int hour, int minute, int second, int month) {
        GetDate getDate = getdate(gmtime());
        return mktime(hour, minute, second, month, getDate.getMday(), getDate.getYear());
    }

    /**
     * 生成一个0时区日期的GMT时间戳
     *
     * @param hour 小时数
     * @param minute 分钟数
     * @param second 秒数(一分钟之内)
     * @param month 月份数
     * @param day 天数
     * @return int
     */
    public static int mktime(int hour, int minute, int second, int month, int day) {
        GetDate getDate = getdate(gmtime());
        return mktime(hour, minute, second, month, day, getDate.getYear());
    }

    /**
     * 生成一个格林威治区日期的GMT时间戳
     *
     * @param hour 小时数
     * @param minute 分钟数
     * @param second 秒数(一分钟之内)
     * @param month 月份数
     * @param day 天数
     * @param year 年份数
     * @return int
     */
    public static int mktime(int hour, int minute, int second, int month, int day, int year) {
        Calendar cal = Calendar.getInstance();
        cal.set(year, month, day, hour, minute, hour);
        Date date = cal.getTime();
        return (int) (date.getTime() / 1000);
    }

    /**
     * 返回一个根据 timestamp 得出的包含有日期信息的关联数组 array。如果没有给出时间戳则认为是当前本地时间。
     *
     * @return String[]
     */
    public static GetDate getdate() {
        return getdate(time());
    }

    /**
     * 返回一个根据 timestamp 得出的包含有日期信息的关联数组 array。如果没有给出时间戳则认为是当前本地时间。
     *
     * @param timestamp 时间戳
     * @return String[]
     */
    public static GetDate getdate(int timestamp) {
        Date date = Date.from(Instant.ofEpochSecond(timestamp));
        return getdate(date);
    }

    /**
     * 返回一个根据 timestamp 得出的包含有日期信息的关联数组 array。如果没有给出时间戳则认为是当前本地时间。
     * @param date Date
     * @return String[]
     */
    public static GetDate getdate(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);

        int year = cal.get(Calendar.YEAR);//获取年份
        int month = cal.get(Calendar.MONTH);//获取月份
        int day = cal.get(Calendar.DATE);//获取日
        int hour = cal.get(Calendar.HOUR);//小时
        int minute = cal.get(Calendar.MINUTE);//分
        int second = cal.get(Calendar.SECOND);//秒
        int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);//一周的第几天
        int dayOfYear = cal.get(Calendar.DAY_OF_YEAR);//一年的第几天
        int timestamp = time(date);//一年的第几天

        GetDate getDate = new GetDate();
        getDate.setYear(year);
        getDate.setMon(month);
        getDate.setHours(hour);
        getDate.setMinutes(minute);
        getDate.setSeconds(second);
        getDate.setMday(day);
        getDate.setWday(dayOfWeek - 1);
        getDate.setYday(dayOfYear);
        getDate.setWeekday(convertWeekDayText(dayOfWeek));
        getDate.setMonth(convertMonthText(month));
        getDate.setTime(timestamp);

        return getDate;
    }

    /**
     * 返回某个历法中某年中某月的天数
     * @param month 选定历法中的某月
     * @param year 选定历法中的某年
     * @return 指定历法中选定的某月的天数。
     */
    public static int cal_days_in_month(int month, int year) {
        Calendar c = Calendar.getInstance();
        c.set(year, month, 0);
        return c.get(Calendar.DAY_OF_MONTH);
    }

    /**
     * 返回某个历法中某年中某月的天数
     * @param calendar 用来计算的某个历法,不支持,默认 CAL_GREGORIAN (gregory)
     * @param month 选定历法中的某月
     * @param year 选定历法中的某年
     * @return 指定历法中选定的某月的天数。
     */
    public static int cal_days_in_month(int calendar, int month, int year) {
        Calendar c = Calendar.getInstance();
        c.set(year, month, 0);
        return c.get(Calendar.DAY_OF_MONTH);
    }

    /**
     * 获得当前时区的时间转换为自定义格式时间
     *
     * @return 格式化后的时间
     */
    public static String date() {
        String format = "yyyy-MM-dd HH:mm:ss";
        TimeZone tz = TimeZone.getDefault();
        DateFormat dateFormat = new SimpleDateFormat(format);
        dateFormat.setTimeZone(tz);
        return dateFormat.format(new Date());
    }

    /**
     * 获得当前时区的时间转换为自定义格式时间
     *
     * @param format 时间格式
     * @return 格式化后的时间
     */
    public static String date(String format) {
        TimeZone tz = TimeZone.getDefault();
        DateFormat dateFormat = new SimpleDateFormat(format);
        dateFormat.setTimeZone(tz);
        return dateFormat.format(new Date());
    }

    /**
     * 获得当前时区的时间转换为自定义格式时间
     *
     * @param format    时间格式
     * @param timestamp 指定时间戳
     * @return 格式化后的时间
     */
    public static String date(String format, long timestamp) {
        TimeZone tz = TimeZone.getDefault();
        DateFormat dateFormat = new SimpleDateFormat(format);
        dateFormat.setTimeZone(tz);
        Date date = new Date(timestamp * 1000L);
        return dateFormat.format(date);
    }

    /**
     * 获得当前时区的时间转换为自定义格式时间
     *
     * @param format 时间格式
     * @param date   指定日期
     * @return 格式化后的时间
     */
    public static String date(String format, Date date) {
        TimeZone tz = TimeZone.getDefault();
        DateFormat dateFormat = new SimpleDateFormat(format);
        dateFormat.setTimeZone(tz);
        return dateFormat.format(date);
    }

    /**
     * 产生一个随机整数
     * @param min 返回的最低值(默认:0)
     * @param max 返回的最高值
     * @return 随机整数
     */
    public static Integer rand(int min, int max) {
        return RandomUtils.nextInt(min, max);
    }

    /**
     * 产生一个随机整数
     * @param max 返回的最高值
     * @return 随机整数
     */
    public static Integer rand(int max) {
        return RandomUtils.nextInt(0, max);
    }

    /**
     * 产生一个随机整数
     * @return 随机整数
     */
    public static Integer rand() {
        return RandomUtils.nextInt();
    }

    /**
     * Convert the given string to lower-case.
     * 用于将字符串转换为小写
     *
     * @param value 输入字符串
     * @return String
     */
    public static String strtolower(String value) {
        return StringUtils.toRootLowerCase(value);
    }

    /**
     * convert the given string to upper-case.
     * 用于将指定字符串转换为大写
     *
     * @param value 输入字符串
     * @return String
     */
    public static String strtoupper(String value) {
        return StringUtils.toRootUpperCase(value);
    }

    /**
     * 返回星期几
     *
     * @param weekDay 星期数字
     * @return 星期文本显示
     */
    private static String convertWeekDayText(int weekDay) {
        String text;
        switch (weekDay) {
            case 1:
                text = "Sunday";
                break;
            case 2:
                text = "Monday";
                break;
            case 3:
                text = "Tuesday";
                break;
            case 4:
                text = "Wednesday";
                break;
            case 5:
                text = "Thursday";
                break;
            case 6:
                text = "Friday";
                break;
            case 7:
                text = "Saturday";
                break;
            default:
                text = null;
                break;
        }
        return text;
    }

    /**
     * 返回月份
     *
     * @param month 月份数字
     * @return 月份文本显示
     */
    private static String convertMonthText(int month) {
        String text;
        switch (month) {
            case 0:
                text = "January";
                break;
            case 1:
                text = "February";
                break;
            case 2:
                text = "March";
                break;
            case 3:
                text = "April";
                break;
            case 4:
                text = "May";
                break;
            case 5:
                text = "June";
                break;
            case 6:
                text = "July";
                break;
            case 7:
                text = "August";
                break;
            case 8:
                text = "September";
                break;
            case 9:
                text = "October";
                break;
            case 10:
                text = "November";
                break;
            case 11:
                text = "December";
                break;
            default:
                text = null;
                break;
        }
        return text;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy