⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datemodule.java

📁 RESIN 3.2 最新源码
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
  }    public static boolean date_default_timezone_set(Env env, String id)  {    env.setDefaultTimeZone(id);    return true;  }    public static String date_format(DateTime dateTime, String format)   {    return dateTime.format(format);  }    public static void date_isodate_set(DateTime dateTime,                                      int year,                                      int week,                                      int day)  {    dateTime.setISODate(year, week, day);  }    public static void date_modify(DateTime dateTime, String modify)  {    dateTime.modify(modify);  }    public static long date_offset_get(DateTime dateTime)  {    return dateTime.getOffset();  }    public static Value date_parse(String date)  {    DateTime dateTime = new DateTime(date);    QDate qDate = dateTime.getQDate();        ArrayValue array = new ArrayValueImpl();        array.put("year", qDate.getYear());    array.put("month", qDate.getMonth() + 1);    array.put("day", qDate.getDayOfMonth());    array.put("hour", qDate.getHour());    array.put("minute", qDate.getMinute());    array.put("second", qDate.getSecond());    array.put("fraction", qDate.getMillisecond() / 1000.0);        //warning_count    //warnings    //error_count    //errors    //is_localtime        return array;  }    public static ArrayValue date_sun_info(long time,                                         double latitude,                                         double longitude)  {    throw new UnimplementedException("date_sun_info");  }    public static Value date_sunrise(int timestamp,                                   @Optional int format,                                   @Optional double latitude,                                   @Optional double longitude,                                   @Optional double zenith,                                   @Optional double gmtOffset)  {  //gmtOffset is specified in hours    throw new UnimplementedException("date_sunrise");  }    public static Value date_sunset(int timestamp,                                  @Optional int format,                                  @Optional double latitude,                                  @Optional double longitude,                                  @Optional double zenith,                                  @Optional double gmtOffset)  {    //gmtOffset is specified in hours    throw new UnimplementedException("date_sunset");  }    public static void date_time_set(DateTime dateTime,                                   int hour,                                   int minute,                                   @Optional int second)  {    dateTime.setTime(hour, minute, second);  }  @ReturnNullAsFalse  public static DateTimeZone date_timezone_get(Env env,                                               @NotNull DateTime dateTime)  {    if (dateTime == null) {      env.warning("DateTime parameter must not be null");            return null;    }        return dateTime.getTimeZone();  }    public static void date_timezone_set(Env env,                                       @NotNull DateTime dateTime,                                       @NotNull DateTimeZone dateTimeZone)  {    if (dateTime == null || dateTimeZone == null) {      env.warning("parameters must not be null");            return;    }        dateTime.setTimeZone(dateTimeZone);  }    public static ArrayValue timezone_abbreviations_list()  {    return DateTimeZone.listAbbreviations();  }    public static ArrayValue timezone_identifiers_list()  {    return DateTimeZone.listIdentifiers();  }    public static Value timezone_name_from_abbr(StringValue abbr,                                              @Optional("-1") int gmtOffset,                                              @Optional boolean isDST)  {    if (gmtOffset == -1)      return DateTimeZone.findTimeZone(abbr);    else      return DateTimeZone.findTimeZone(abbr, gmtOffset, isDST);  }    public static String timezone_name_get(DateTimeZone dateTimeZone)  {    return dateTimeZone.getName();  }    public static long timezone_offset_get(DateTimeZone dateTimeZone,                                         DateTime dateTime)  {    if (dateTimeZone == null)      return 0;    else      return dateTimeZone.getOffset(dateTime);  }    public static DateTimeZone timezone_open(String timeZone)  {    return new DateTimeZone(timeZone);  }    public static Value timezone_transitions_get(DateTimeZone dateTimeZone)  {    return dateTimeZone.getTransitions();  }    static class DateParser {    private static final int INT = 1;    private static final int PERIOD = 2;    private static final int AGO = 3;    private static final int AM = 4;    private static final int PM = 5;    private static final int MONTH = 6;    private static final int WEEKDAY = 7;    private static final int UTC = 8;        private static final int UNIT_YEAR = 1;    private static final int UNIT_MONTH = 2;    private static final int UNIT_FORTNIGHT = 3;    private static final int UNIT_WEEK = 4;    private static final int UNIT_DAY = 5;    private static final int UNIT_HOUR = 6;    private static final int UNIT_MINUTE = 7;    private static final int UNIT_SECOND = 8;    private static final int UNIT_NOW = 9;        private static final int NULL_VALUE = Integer.MAX_VALUE;    private QDate _date;        private String _s;    private int _index;    private int _length;        private StringBuilder _sb = new StringBuilder();    private int _peekToken;        private int _value;    private int _digits;    private int _unit;    private int _weekday;    private boolean _hasDate;    private boolean _hasTime;    DateParser(String s, QDate date)    {      _date = date;      _s = s;      _length = s.length();    }    long parse()    {      _value = NULL_VALUE;      _unit = 0;	      while (true) {        int token = nextToken();        if (token == '-') {          token = nextToken();          if (token == INT)            _value = -_value;          else {            _peekToken = token;            continue;          }        }        if (token < 0) {          return _date.getGMTTime();        }        else if (token == INT) {          int digits = _digits;          int value = _value;          token = nextToken();          if (token == PERIOD) {            parsePeriod();          }          else if (token == ':') {            parseTime();            _hasTime = true;          }          else if (token == '-') {            parseISODate(value);            _hasDate = true;          }          else if (token == '/') {            parseUSDate(value);            _hasDate = true;          }          else if (token == MONTH) {            parseDayMonthDate(value);            _hasDate = true;          }          else {            _peekToken = token;            parseBareInt(value, digits);          }        }        else if (token == PERIOD) {          parsePeriod();        }        else if (token == WEEKDAY) {          addWeekday(_value, _weekday);          _value = NULL_VALUE;        }        else if (token == MONTH) {          parseMonthDate(_value);          _hasDate = true;        }        else if (token == '@') {          token = nextToken();          if (token == INT) {            int value = _value;            _value = NULL_VALUE;            _date.setGMTTime(value * 1000L);            token = nextToken();            if (token == '.') {              token = nextToken();              if (token != INT)                _peekToken = token;            }            else {              _peekToken = token;            }          }        }      }    }    private void parsePeriod()    {      int value = _value;      int unit = _unit;      _value = NULL_VALUE;      _unit = 0;      int token = nextToken();      if (token == AGO)	value = -value;      else	_peekToken = token;      addTime(value, unit);    }    private void parseISODate(int value1)    {      int year = _date.getYear();      int month = 0;      int day = 0;            if (value1 < 0)	value1 = - value1;            int token = nextToken();      int value2 = 0;            if (token == INT) {	value2 = _value;	_value = NULL_VALUE;      }      else {	_peekToken = token;	return;      }            token = nextToken();      if (token == '-') {	token = nextToken();	if (token == INT) {	  if (value1 < 0)	    _date.setYear(value1);	  else if (value1 <= 68)	    _date.setYear(2000 + value1);	  else if (value1 < 100)	    _date.setYear(1900 + value1);	  else	    _date.setYear(value1);	  	  _date.setMonth(value2 - 1);	  _date.setDayOfMonth(_value);	}	else {	  _date.setMonth(value1 - 1);	  _date.setDayOfMonth(value2);	  	  _peekToken = token;	}      }      else {	_date.setMonth(value1 - 1);	_date.setDayOfMonth(value2);	  	_peekToken = token;      }    }    private void parseUSDate(int value1)    {      int year = _date.getYear();      int month = 0;      int day = 0;            if (value1 < 0)	value1 = - value1;            int token = nextToken();      int value2 = 0;            if (token == INT) {	value2 = _value;      }      else {	_peekToken = token;	return;      }            _value = NULL_VALUE;      token = nextToken();      if (token == '/') {	token = nextToken();	if (token == INT) {	  _date.setMonth(value1 - 1);	  _date.setDayOfMonth(value2);	  	  if (_value < 0)	    _date.setYear(_value);	  else if (_value <= 68)	    _date.setYear(2000 + _value);	  else if (_value < 100)	    _date.setYear(1900 + _value);	  else	    _date.setYear(_value);	}	else {	  _date.setMonth(value1 - 1);	  _date.setDayOfMonth(value2);	  	  _peekToken = token;	}	_value = NULL_VALUE;      }      else {	_date.setMonth(value1 - 1);	_date.setDayOfMonth(value2);	  	_peekToken = token;      }    }    private void parseDayMonthDate(int value1)    {      int year = _date.getYear();      int month = 0;      int day = 0;            if (value1 < 0)	value1 = - value1;      int value2 = _value;      _value = NULL_VALUE;      int token = nextToken();      if (token == '-') {	_value = NULL_VALUE;	token = nextToken();      }      if (token == INT) {	_date.setDayOfMonth(value1);	_date.setMonth(value2 - 1);	  	if (_value < 0)	  _date.setYear(_value);	else if (_value <= 68)	  _date.setYear(2000 + _value);	else if (_value < 100)	  _date.setYear(1900 + _value);	else	  _date.setYear(_value);		_value = NULL_VALUE;      }      else {	_date.setDayOfMonth(value1);	_date.setMonth(value2 - 1);	  	_peekToken = token;      }    }    private void parseMonthDate(int value1)    {      if (value1 < 0)	value1 = - value1;      _value = NULL_VALUE;      int token = nextToken();      if (token == '-') {	_value = NULL_VALUE;	token = nextToken();      }      if (token == INT) {	int value2 = _value;	_value = NULL_VALUE;	token = nextToken();	if (token == '-') {	  _value = NULL_VALUE;	  token = nextToken();	}	if (token == INT) {	  _date.setMonth(value1 - 1);	  _date.setDayOfMonth(value2);	  	  if (_value < 0)	    _date.setYear(_value);	  else if (_value <= 68)	    _date.setYear(2000 + _value);	  else if (_value < 100)	    _date.setYear(1900 + _value);	  else	    _date.setYear(_value);	  	  _value = NULL_VALUE;	}	else {	  _date.setMonth(value1 - 1);	  _date.setDayOfMonth(value2);	  _peekToken = token;	}      }      else {	_date.setMonth(value1 - 1);	  	_peekToken = token;      }    }    private void parseTime()    {      int hour = _value;      _value = NULL_VALUE;      if (hour < 0)	hour = - hour;      _date.setHour(hour);      _date.setMinute(0);      _date.setSecond(0);      _date.setMillisecond(0);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -