Date、Calendar、LocalDate、LocalTime、LocalDateTime类源码解析

日期类源码
摘要由CSDN通过智能技术生成

展示Date类的常用功能,知道功能作用就可以

public class Date
    implements java.io.Serializable, Cloneable, Comparable<Date>{
   
	private static final BaseCalendar gcal =
                                CalendarSystem.getGregorianCalendar();//日历系统
	private static BaseCalendar jcal;
	private transient long fastTime;
	private transient BaseCalendar.Date cdate;
	private static int defaultCenturyStart;
	private static final long serialVersionUID = 7523967970034938905L;
	//将当前时间初始化fastTime
	public Date() {
   
        this(System.currentTimeMillis());
    }
    //初始化fastTime
	public Date(long date) {
   
        fastTime = date;
    }
    //初始化时间,从1900年1月1号0点开始添加相应的参数时间
	public Date(int year, int month, int date) {
   
        this(year, month, date, 0, 0, 0);
    }
    //初始化时间,从1900年1月1号0点开始添加相应的参数时间
	public Date(int year, int month, int date, int hrs, int min) {
   
        this(year, month, date, hrs, min, 0);
    }
    //初始化时间,从1900年1月1号0点开始添加相应的参数时间
	public Date(int year, int month, int date, int hrs, int min, int sec) {
   
        int y = year + 1900;
        if (month >= 12) {
   
            y += month / 12;
            month %= 12;
        } else if (month < 0) {
   
            y += CalendarUtils.floorDivide(month, 12);
            month = CalendarUtils.mod(month, 12);
        }
        BaseCalendar cal = getCalendarSystem(y);
        cdate = (BaseCalendar.Date) cal.newCalendarDate(TimeZone.getDefaultRef());
        cdate.setNormalizedDate(y, month + 1, date).setTimeOfDay(hrs, min, sec, 0);
        getTimeImpl();
        cdate = null;
    }
    //将s初始化时间
	public Date(String s) {
   
        this(parse(s));
    }
    //将s转化为时间戳的long类型
	public static long parse(String s) {
   
        int year = Integer.MIN_VALUE;
        int mon = -1;
        int mday = -1;
        int hour = -1;
        int min = -1;
        int sec = -1;
        int millis = -1;
        int c = -1;
        int i = 0;
        int n = -1;
        int wst = -1;
        int tzoffset = -1;
        int prevc = 0;
    syntax:
        {
   
            if (s == null)
                break syntax;
            int limit = s.length();
            while (i < limit) {
   
                c = s.charAt(i);
                i++;
                if (c <= ' ' || c == ',')
                    continue;
                if (c == '(') {
    // skip comments
                    int depth = 1;
                    while (i < limit) {
   
                        c = s.charAt(i);
                        i++;
                        if (c == '(') depth++;
                        else if (c == ')')
                            if (--depth <= 0)
                                break;
                    }
                    continue;
                }
                if ('0' <= c && c <= '9') {
   
                    n = c - '0';
                    while (i < limit && '0' <= (c = s.charAt(i)) && c <= '9') {
   
                        n = n * 10 + c -
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值