package com.xuqm.base.common;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class TimeHelper {

    /**
     * 获取当前时间戳
     *
     * @return 时间戳
     */
    public static long getTimeMillis() {
        return System.currentTimeMillis();
    }

    /**
     * 获取当前时间，指定返回样式
     *
     * @param formats 指定样式
     * @return 时间字符串
     */
    public static String getTimeString(String formats) {
        return getStringFormMillis(System.currentTimeMillis(), formats);
    }

    /**
     * 根据给定时间戳和样式，返回字符串
     *
     * @param millis  时间戳
     * @param formats 指定字符串格式
     * @return 时间字符串
     */
    public static String getStringFormMillis(long millis, String formats) {
        Date date = new Date(millis);
        return new SimpleDateFormat(formats, Locale.getDefault()).format(date);
    }

    /**
     * 根据Date 返回指定格式的时字符串
     *
     * @param date    数据
     * @param formats 格式
     * @return 指定格式的字符串
     */
    public static String getStringFromDate(Date date, String formats) {
        SimpleDateFormat formatter = new SimpleDateFormat(formats, Locale.getDefault());
        return formatter.format(date);
    }

    /**
     * 根据给定字符串和格式，获取时间戳
     *
     * @param dateString 时间字符串
     * @param formats    时间格式
     * @return 时间戳
     */
    public static long getTimeMillisForType(String dateString, String formats) {
        SimpleDateFormat format = new SimpleDateFormat(formats, Locale.getDefault());
        Date date = null;
        try {
            date = format.parse(dateString);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        return date != null ? date.getTime() : 0;

    }

    /**
     * 获取以秒为单位的时间戳
     *
     * @return 秒
     */
    public static long getTimeFromSecond() {
        return getTimeMillis() / 1000;
    }
}
