📄 datemodule.java
字号:
break; } case 'o': { int year = calendar.getYear(); int week = calendar.getWeek(); int month = calendar.getMonth(); if (month > week) year++; else if (week == 53) year--; sb.append((year / 1000) % 10); sb.append((year / 100) % 10); sb.append((year / 10) % 10); sb.append((year) % 10); break; } case 'Y': { int year = calendar.getYear(); sb.append((year / 1000) % 10); sb.append((year / 100) % 10); sb.append((year / 10) % 10); sb.append((year) % 10); break; } case 'y': { int year = calendar.getYear(); sb.append((year / 10) % 10); sb.append((year) % 10); break; } // // time // case 'a': { int hour = calendar.getHour(); if (hour < 12) sb.append("am"); else sb.append("pm"); break; } case 'A': { int hour = calendar.getHour(); if (hour < 12) sb.append("AM"); else sb.append("PM"); break; } case 'g': { int hour = calendar.getHour() % 12; if (hour == 0) hour = 12; sb.append(hour); break; } case 'G': { int hour = calendar.getHour(); sb.append(hour); break; } case 'h': { int hour = calendar.getHour() % 12; if (hour == 0) hour = 12; sb.append(hour / 10); sb.append(hour % 10); break; } case 'H': { int hour = calendar.getHour(); sb.append(hour / 10); sb.append(hour % 10); break; } case 'i': { int minutes = calendar.getMinute(); sb.append(minutes / 10); sb.append(minutes % 10); break; } case 's': { int seconds = calendar.getSecond(); sb.append(seconds / 10); sb.append(seconds % 10); break; } // // timezone // case 'e': { TimeZone zone = calendar.getLocalTimeZone(); sb.append(zone.getID()); break; } case 'I': { if (calendar.isDST()) sb.append('1'); else sb.append('0'); break; } case 'O': { long offset = calendar.getZoneOffset(); int minute = (int) (offset / (60 * 1000)); if (minute < 0) { sb.append('-'); minute = -1 * minute; } else sb.append('+'); sb.append((minute / 60) / 10); sb.append((minute / 60) % 10); sb.append((minute % 60) % 10); sb.append(minute % 10); break; } case 'P': { long offset = calendar.getZoneOffset(); int minute = (int) (offset / (60 * 1000)); if (minute < 0) { sb.append('-'); minute = -1 * minute; } else sb.append('+'); sb.append((minute / 60) / 10); sb.append((minute / 60) % 10); sb.append(':'); sb.append((minute % 60) % 10); sb.append(minute % 10); break; } case 'T': { TimeZone zone = calendar.getLocalTimeZone(); sb.append(zone.getDisplayName(calendar.isDST(), TimeZone.SHORT)); break; } case 'Z': { long offset = calendar.getZoneOffset(); sb.append(offset / (1000)); break; } case 'c': { sb.append(calendar.printISO8601()); break; } case 'r': { sb.append(calendar.printDate()); break; } case 'U': { sb.append(now / 1000); break; } case '\\': sb.append(format.charAt(++i)); break; default: sb.append(ch); break; } } return sb.toString(); } } /** * Returns the time as an indexed or associative array */ public ArrayValue localtime(@NotNull @Optional("-1") long time, @Optional("false") boolean isAssociative) { if (time < 0) time = Alarm.getCurrentTime(); else time = time * 1000; long sec; long min; long hour; long mday; long mon; long year; long wday; long yday; long isdst; synchronized (_localCalendar) { _localCalendar.setGMTTime(time); sec = _localCalendar.getSecond(); min = _localCalendar.getMinute(); hour = _localCalendar.getHour(); mday = _localCalendar.getDayOfMonth(); mon = _localCalendar.getMonth(); year = _localCalendar.getYear(); wday = _localCalendar.getDayOfWeek(); yday = _localCalendar.getDayOfYear(); isdst = _localCalendar.isDST() ? 1 : 0; } year = year - 1900; wday = wday - 1; ArrayValue value = new ArrayValueImpl(); if (isAssociative) { value.put("tm_sec", sec); value.put("tm_min", min); value.put("tm_hour", hour); value.put("tm_mday", mday); value.put("tm_mon", mon); value.put("tm_year", year); value.put("tm_wday", wday); value.put("tm_yday", yday); value.put("tm_isdst", isdst); } else { value.put(sec); value.put(min); value.put(hour); value.put(mday); value.put(mon); value.put(year); value.put(wday); value.put(yday); value.put(isdst); } return value; } /** * Returns the time including microseconds */ public static Value microtime(Env env, @Optional boolean getAsFloat) { long now; // windows System.nanoTime() does not return the system time, // so just return milliseconds multiplied by 1000 if (Path.isWindows()) { now = System.currentTimeMillis() * 1000L; } else { now = System.nanoTime() / 1000L; } if (getAsFloat) { return new DoubleValue(((double) now) / 1e6); } else { return (env.createUnicodeBuilder() .append(now % 1000000L / 1e6) .append(' ') .append(now / 1000000L)); } } /** * Returns the formatted date. */ public long mktime(Env env, @Optional() Value hourV, @Optional() Value minuteV, @Optional() Value secondV, @Optional() Value monthV, @Optional() Value dayV, @Optional() Value yearV, @Optional("-1") int isDST) { if (isDST != -1) env.deprecatedArgument("isDST"); QDate date = new QDate(true); long now = Alarm.getCurrentTime(); date.setLocalTime(now); setMktime(date, hourV, minuteV, secondV, monthV, dayV, yearV); return date.getGMTTime() / 1000L; } private static void setMktime(QDate date, Value hourV, Value minuteV, Value secondV, Value monthV, Value dayV, Value yearV) { if (! hourV.isDefault()) { int hour = hourV.toInt(); date.setHour(hour); } if (! minuteV.isDefault()) { int minute = minuteV.toInt(); date.setMinute(minute); } if (! secondV.isDefault()) { int second = secondV.toInt(); date.setSecond(second); } if (! monthV.isDefault()) { int month = monthV.toInt(); date.setMonth(month - 1); } if (! dayV.isDefault()) { int day = dayV.toInt(); date.setDayOfMonth(day); } if (! yearV.isDefault()) { int year = yearV.toInt(); if (year >= 1000) { date.setYear(year); } else if (year >= 70) { date.setYear(year + 1900); } else if (year >= 0) { date.setYear(year + 2000); } else if (year < 0) { date.setYear(1969); } } } /** * Returns the formatted date. */ public String strftime(String format, @Optional("-1") long phpTime) { long time; if (phpTime == -1) time = Alarm.getCurrentTime(); else time = 1000 * phpTime; return QDate.formatLocal(time, format); } /** * Parses the time */ public Value strtotime(String timeString, @Optional("-1") long now) { try { if (now >= 0) now = 1000L * now; else now = Alarm.getCurrentTime(); QDate date = new QDate(true); date.setGMTTime(now); if (timeString.equals("")) { date.setHour(0); date.setMinute(0); date.setSecond(0); return new LongValue(date.getGMTTime() / 1000L); } DateParser parser = new DateParser(timeString, date); return new LongValue(parser.parse() / 1000L); } catch (Exception e) { log.log(Level.FINE, e.toString(), e); return BooleanValue.FALSE; } } /** * Returns the current time in seconds. */ public static long time() { return Alarm.getCurrentTime() / 1000L; } /** * Convert from a julian day to unix */ public long jdtounix(double jd) { long z = (long) (jd + 0.5); long w = (long) ((z - 1867216.25) / 36524.25); long x = (long) (w / 4); long a = (long) (z + 1 + w - x); long b = (long) (a + 1524); long c = (long) ((b - 122.1) / 365.25); long d = (long) (365.25 * c); long e = (long) ((b - d) / 30.6001); long f = (long) (30.6001 * e); long day = b - d - f; long month = e - 1; long year = c - 4716; if (month > 12) { month -= 12; year += 1; } synchronized (_localCalendar) { _localCalendar.setHour(0); _localCalendar.setMinute(0); _localCalendar.setSecond(0); _localCalendar.setDayOfMonth((int) day); _localCalendar.setMonth((int) (month - 1)); _localCalendar.setYear((int) year); return _localCalendar.getLocalTime() / 1000L; } } public static DateTime date_create(@Optional("now") String time, @Optional DateTimeZone dateTimeZone) { return DateTime.__construct(time, dateTimeZone); } public static void date_date_set(DateTime dateTime, int year, int month, int day) { dateTime.setDate(year, month, day); } public static String date_default_timezone_get(Env env) { TimeZone timeZone = env.getDefaultTimeZone(); String id; if (timeZone != null) return timeZone.getID(); id = env.getIniString("date.timezone"); if (id != null) return id; return TimeZone.getDefault().getID();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -