美文网首页
时间戳转换为标准格式的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