美文网首页
时间戳转换为标准格式的Java算法实现(非调用日期类)

时间戳转换为标准格式的Java算法实现(非调用日期类)

作者: 悬雨 | 来源:发表于2018-03-07 14:20 被阅读25次

public class TimeStamp {

    public double dayDate;
    public int month = 0;
    public int hour;

    public long getYear/*and day~~~~~~~~*/() {
        return (int) (System.currentTimeMillis() / (1461 * 24 * 3600d * 1000) * 4 + 1970);
    }

    public int getMonth() {
        //用总天数day-已经过去年份的天数,然后减去每个月的天数,挨个月份遍历
        //先求天数:
        double day = (long) (System.currentTimeMillis() / (24 * 3600d * 1000));
        int passYearDays = 0;//完整年过去的天数
        int[] rMonth = new int[]{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};//闰年月天数
        int[] pMonth = new int[]{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};//平年月天数
        for (int c = 1970; c < getYear(); c++)//计算天数循环,到2015年整个结束共计的天数
        {
            int a = 365;
            if (c % 4 == 0)
                a = 366;
            passYearDays = passYearDays + a;//总计从时间戳开始过去完整年的天数
        }
        double leftDays = 0;//完整年减去后剩下的天数
        leftDays = System.currentTimeMillis() / (24 * 3600d * 1000) - passYearDays;
        leftDays = (int) leftDays;
        //剩下的天数返回的是对的===========================================================
        //=======================================================
        //创造一个for循环一个月一个月的遍历减去天数
        for (int i = 0; i <= 11; i++) {//==============开始计算平年
            if (getYear() % 4 != 0) {
                if (leftDays <= pMonth[i] && leftDays >= 1) {
                    dayDate = leftDays;
                    break;
                }
                if (leftDays >= pMonth[i]) {
                    leftDays = leftDays - pMonth[i];
                    month++;
                }
            }
            if (getYear() % 4 == 0) {
                if (leftDays <= rMonth[i] && leftDays >= 1) {
                    dayDate = leftDays;
                    break;
                }
                if (leftDays >= rMonth[i]) {
                    leftDays = leftDays - rMonth[i];
                    month++;
                }
            }
        }
        return month + 1;
    }

    public int getDate() {
        return (int) dayDate + 1;
    }

    public String getHour() {
        int hourTemp, passDays;
        String hTemp = "";
        passDays = (int) (System.currentTimeMillis() / (24 * 3600d * 1000));
        hourTemp =
                (int) ((System.currentTimeMillis() - passDays * 24 * 3600d * 1000) / (3600 * 1000d) + 8);
        if (hourTemp <= 9)
            hTemp = "0" + hourTemp;
        else
            hTemp = "" + hourTemp;
        return hTemp;
    }

    public String getMinute() {
        int passHours, minuteTemp;
        String mTemp = "";
        passHours = (int) (System.currentTimeMillis() / (3600 * 1000d));
        minuteTemp = (int) ((System.currentTimeMillis() - passHours * 3600 * 1000d) / 60 / 1000);
        if (minuteTemp <= 9)
            mTemp = "0" + minuteTemp;
        if (minuteTemp > 9)
            mTemp = minuteTemp + "";
        return mTemp;
    }

    public String getSecond() {
        int secondTemp, passMinutes;
        String sTemp = "";
        passMinutes = (int) (System.currentTimeMillis() / (60 * 1000d));
        secondTemp = (int) ((System.currentTimeMillis() - passMinutes * 60 * 1000d) / 1000);
        if (secondTemp <= 9)
            sTemp = "0" + secondTemp;
        if (secondTemp > 9)
            sTemp = secondTemp + "";
        return sTemp;
    }

    public static void main(String args[]) {
        TimeStamp time = new TimeStamp();
        System.out.println(time.getYear() + "年" + time.getMonth() + "月" + time.getDate() + "日 " + time.getHour() + ":" + time.getMinute() + ":" + time.getSecond());
    }
}

相关文章

网友评论

      本文标题:时间戳转换为标准格式的Java算法实现(非调用日期类)

      本文链接:https://www.haomeiwen.com/subject/lonqfftx.html