Java Code Examples for java.util.TimeZone#getDSTSavings()
The following examples show how to use
java.util.TimeZone#getDSTSavings() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: TimeZoneWrapper.java From opentasks with Apache License 2.0 | 6 votes |
@Override public boolean equals(Object object) { if (!(object instanceof TimeZoneWrapper)) // matches null too { return false; } TimeZone otherTimeZone = (TimeZone) object; /* * This is a very simple check for equality of two time zones. It returns the wrong result if two time zones have the same UTC offset, but use different * dates to switch to summer time. * * Are there such cases? How can we improve it? Maybe by testing a few more days in March and October? * * TODO: improve the check */ return (mTimeZone.getID().equals(otherTimeZone.getID())) || (mTimeZone.useDaylightTime() == otherTimeZone.useDaylightTime() && mTimeZone.getRawOffset() == otherTimeZone.getRawOffset() && mTimeZone.getDSTSavings() == otherTimeZone.getDSTSavings() && mTimeZone.inDaylightTime(TEST_DATE) == otherTimeZone.inDaylightTime( TEST_DATE)); }
Example 2
Source File: TimeZoneInfo.java From es6draft with MIT License | 5 votes |
@Override public int getDSTSavings(TimeZone tz, long date) { if (tz.inDaylightTime(new Date(date))) { return tz.getDSTSavings(); } return 0; }
Example 3
Source File: TestImmutableTimestamp.java From reladomo with Apache License 2.0 | 5 votes |
protected static int getOffsetFromTimeZone(TimeZone tz, Date date) { int offset = tz.getRawOffset(); if (tz.inDaylightTime(date)) { offset += tz.getDSTSavings(); } return offset; }
Example 4
Source File: getTimeZoneInfo.java From openbd-core with GNU General Public License v3.0 | 5 votes |
public cfData execute(cfSession _session, List<cfData> parameters) throws cfmRunTimeException { cfStructData timeInfo = new cfStructData(); TimeZone tz = (TimeZone) TimeZone.getDefault().clone(); int dstCompensation = 0; boolean dst = tz.inDaylightTime(new Date()); if (dst) dstCompensation = tz.getDSTSavings(); // the # of milliseconds in an hour. long offset = tz.getRawOffset() + dstCompensation; offset = offset * -1; // cfmx livedocs for this function mandate that the // sign be this way (which happens to be opposite of // what Java does) long totalOffSet = offset / 1000L; long hour = offset / (1000L * 60L * 60L); long minutes = offset / (1000L * 60L); long partialHourAsMinutes = minutes % 60; // to remove all whole hours timeInfo.setData("utctotaloffset", new cfNumberData(totalOffSet)); timeInfo.setData("utchouroffset", new cfNumberData(hour)); timeInfo.setData("utcminuteoffset", new cfNumberData(partialHourAsMinutes)); timeInfo.setData("isdston", cfBooleanData.getcfBooleanData(dst)); return timeInfo; }
Example 5
Source File: SimpleDateFormat.java From jdk-1.7-annotated with Apache License 2.0 | 4 votes |
/** * find time zone 'text' matched zoneStrings and set to internal * calendar. */ private int subParseZoneString(String text, int start, CalendarBuilder calb) { boolean useSameName = false; // true if standard and daylight time use the same abbreviation. TimeZone currentTimeZone = getTimeZone(); // At this point, check for named time zones by looking through // the locale data from the TimeZoneNames strings. // Want to be able to parse both short and long forms. int zoneIndex = formatData.getZoneIndex(currentTimeZone.getID()); TimeZone tz = null; String[][] zoneStrings = formatData.getZoneStringsWrapper(); String[] zoneNames = null; int nameIndex = 0; if (zoneIndex != -1) { zoneNames = zoneStrings[zoneIndex]; if ((nameIndex = matchZoneString(text, start, zoneNames)) > 0) { if (nameIndex <= 2) { // Check if the standard name (abbr) and the daylight name are the same. useSameName = zoneNames[nameIndex].equalsIgnoreCase(zoneNames[nameIndex + 2]); } tz = TimeZone.getTimeZone(zoneNames[0]); } } if (tz == null) { zoneIndex = formatData.getZoneIndex(TimeZone.getDefault().getID()); if (zoneIndex != -1) { zoneNames = zoneStrings[zoneIndex]; if ((nameIndex = matchZoneString(text, start, zoneNames)) > 0) { if (nameIndex <= 2) { useSameName = zoneNames[nameIndex].equalsIgnoreCase(zoneNames[nameIndex + 2]); } tz = TimeZone.getTimeZone(zoneNames[0]); } } } if (tz == null) { int len = zoneStrings.length; for (int i = 0; i < len; i++) { zoneNames = zoneStrings[i]; if ((nameIndex = matchZoneString(text, start, zoneNames)) > 0) { if (nameIndex <= 2) { useSameName = zoneNames[nameIndex].equalsIgnoreCase(zoneNames[nameIndex + 2]); } tz = TimeZone.getTimeZone(zoneNames[0]); break; } } } if (tz != null) { // Matched any ? if (!tz.equals(currentTimeZone)) { setTimeZone(tz); } // If the time zone matched uses the same name // (abbreviation) for both standard and daylight time, // let the time zone in the Calendar decide which one. // // Also if tz.getDSTSaving() returns 0 for DST, use tz to // determine the local time. (6645292) int dstAmount = (nameIndex >= 3) ? tz.getDSTSavings() : 0; if (!(useSameName || (nameIndex >= 3 && dstAmount == 0))) { calb.clear(Calendar.ZONE_OFFSET).set(Calendar.DST_OFFSET, dstAmount); } return (start + zoneNames[nameIndex].length()); } return 0; }
Example 6
Source File: SimpleDateFormat.java From openjdk-8-source with GNU General Public License v2.0 | 4 votes |
/** * find time zone 'text' matched zoneStrings and set to internal * calendar. */ private int subParseZoneString(String text, int start, CalendarBuilder calb) { boolean useSameName = false; // true if standard and daylight time use the same abbreviation. TimeZone currentTimeZone = getTimeZone(); // At this point, check for named time zones by looking through // the locale data from the TimeZoneNames strings. // Want to be able to parse both short and long forms. int zoneIndex = formatData.getZoneIndex(currentTimeZone.getID()); TimeZone tz = null; String[][] zoneStrings = formatData.getZoneStringsWrapper(); String[] zoneNames = null; int nameIndex = 0; if (zoneIndex != -1) { zoneNames = zoneStrings[zoneIndex]; if ((nameIndex = matchZoneString(text, start, zoneNames)) > 0) { if (nameIndex <= 2) { // Check if the standard name (abbr) and the daylight name are the same. useSameName = zoneNames[nameIndex].equalsIgnoreCase(zoneNames[nameIndex + 2]); } tz = TimeZone.getTimeZone(zoneNames[0]); } } if (tz == null) { zoneIndex = formatData.getZoneIndex(TimeZone.getDefault().getID()); if (zoneIndex != -1) { zoneNames = zoneStrings[zoneIndex]; if ((nameIndex = matchZoneString(text, start, zoneNames)) > 0) { if (nameIndex <= 2) { useSameName = zoneNames[nameIndex].equalsIgnoreCase(zoneNames[nameIndex + 2]); } tz = TimeZone.getTimeZone(zoneNames[0]); } } } if (tz == null) { int len = zoneStrings.length; for (int i = 0; i < len; i++) { zoneNames = zoneStrings[i]; if ((nameIndex = matchZoneString(text, start, zoneNames)) > 0) { if (nameIndex <= 2) { useSameName = zoneNames[nameIndex].equalsIgnoreCase(zoneNames[nameIndex + 2]); } tz = TimeZone.getTimeZone(zoneNames[0]); break; } } } if (tz != null) { // Matched any ? if (!tz.equals(currentTimeZone)) { setTimeZone(tz); } // If the time zone matched uses the same name // (abbreviation) for both standard and daylight time, // let the time zone in the Calendar decide which one. // // Also if tz.getDSTSaving() returns 0 for DST, use tz to // determine the local time. (6645292) int dstAmount = (nameIndex >= 3) ? tz.getDSTSavings() : 0; if (!(useSameName || (nameIndex >= 3 && dstAmount == 0))) { calb.clear(Calendar.ZONE_OFFSET).set(Calendar.DST_OFFSET, dstAmount); } return (start + zoneNames[nameIndex].length()); } return 0; }
Example 7
Source File: Util.java From calcite with Apache License 2.0 | 4 votes |
/** * Writes a daylight savings time transition to a POSIX timezone * description. * * @param tz Timezone * @param buf Buffer to append to * @param mode Transition mode * @param day Day of transition * @param month Month of transition * @param dayOfWeek Day of week of transition * @param time Time of transition in millis * @param timeMode Mode of time transition * @param verbose Verbose * @param isEnd Whether this transition is leaving DST */ private static void appendPosixDaylightTransition( TimeZone tz, StringBuilder buf, int mode, int day, int month, int dayOfWeek, int time, int timeMode, boolean verbose, boolean isEnd) { buf.append(','); int week = day; switch (mode) { case 1: // SimpleTimeZone.DOM_MODE throw Util.needToImplement(0); case 3: // SimpleTimeZone.DOW_GE_DOM_MODE // If the day is 1, 8, 15, 22, we can translate this to case 2. switch (day) { case 1: week = 1; // 1st week of month break; case 8: week = 2; // 2nd week of month break; case 15: week = 3; // 3rd week of month break; case 22: week = 4; // 4th week of month break; default: throw new AssertionError( "POSIX timezone format cannot represent " + tz); } // fall through case 2: // SimpleTimeZone.DOW_IN_MONTH_MODE buf.append('M'); buf.append(month + 1); // 1 <= m <= 12 buf.append('.'); if (week == -1) { // java represents 'last week' differently from POSIX week = 5; } buf.append(week); // 1 <= n <= 5, 5 means 'last' buf.append('.'); buf.append(dayOfWeek - 1); // 0 <= d <= 6, 0=Sunday break; case 4: // SimpleTimeZone.DOW_LE_DOM_MODE throw Util.needToImplement(0); default: throw new AssertionError("unexpected value: " + mode); } switch (timeMode) { case 0: // SimpleTimeZone.WALL_TIME break; case 1: // SimpleTimeZone.STANDARD_TIME, e.g. Australia/Sydney if (isEnd) { time += tz.getDSTSavings(); } break; case 2: // SimpleTimeZone.UTC_TIME, e.g. Europe/Paris time += tz.getRawOffset(); if (isEnd) { time += tz.getDSTSavings(); } break; } if (verbose || (time != 7200000)) { // POSIX allows us to omit the time if it is 2am (the default) buf.append('/'); appendPosixTime(buf, time); } }
Example 8
Source File: ApiResponseHelper.java From cloudstack with Apache License 2.0 | 4 votes |
public String getDateStringInternal(Date inputDate) { if (inputDate == null) { return null; } TimeZone tz = _usageSvc.getUsageTimezone(); Calendar cal = Calendar.getInstance(tz); cal.setTime(inputDate); StringBuilder sb = new StringBuilder(32); sb.append(cal.get(Calendar.YEAR)).append('-'); int month = cal.get(Calendar.MONTH) + 1; if (month < 10) { sb.append('0'); } sb.append(month).append('-'); int day = cal.get(Calendar.DAY_OF_MONTH); if (day < 10) { sb.append('0'); } sb.append(day); sb.append("'T'"); int hour = cal.get(Calendar.HOUR_OF_DAY); if (hour < 10) { sb.append('0'); } sb.append(hour).append(':'); int minute = cal.get(Calendar.MINUTE); if (minute < 10) { sb.append('0'); } sb.append(minute).append(':'); int seconds = cal.get(Calendar.SECOND); if (seconds < 10) { sb.append('0'); } sb.append(seconds); double offset = cal.get(Calendar.ZONE_OFFSET); if (tz.inDaylightTime(inputDate)) { offset += (1.0 * tz.getDSTSavings()); // add the timezone's DST // value (typically 1 hour // expressed in milliseconds) } offset = offset / (1000d * 60d * 60d); int hourOffset = (int)offset; double decimalVal = Math.abs(offset) - Math.abs(hourOffset); int minuteOffset = (int)(decimalVal * 60); if (hourOffset < 0) { if (hourOffset > -10) { sb.append("-0"); } else { sb.append('-'); } sb.append(Math.abs(hourOffset)); } else { if (hourOffset < 10) { sb.append("+0"); } else { sb.append("+"); } sb.append(hourOffset); } sb.append(':'); if (minuteOffset == 0) { sb.append("00"); } else if (minuteOffset < 10) { sb.append('0').append(minuteOffset); } else { sb.append(minuteOffset); } return sb.toString(); }
Example 9
Source File: SetTimeTx.java From xDrip with GNU General Public License v3.0 | 4 votes |
private static long getActualDSTOffset(final TimeZone mTimeZone) { return (mTimeZone.useDaylightTime() && mTimeZone.inDaylightTime(new Date())) ? mTimeZone.getDSTSavings() : 0; }
Example 10
Source File: TestSimpleDateFormat.java From java-util with Apache License 2.0 | 4 votes |
@Test public void testTimeZone() throws Exception { SafeSimpleDateFormat x = new SafeSimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String s = x.format(getDate(2013, 9, 7, 16, 15, 31)); assertEquals("2013-09-07 04:15:31", s); Date then = x.parse(s); Calendar cal = Calendar.getInstance(); cal.clear(); cal.setTime(then); assertEquals(2013, cal.get(Calendar.YEAR)); assertEquals(8, cal.get(Calendar.MONTH)); // Sept assertEquals(7, cal.get(Calendar.DAY_OF_MONTH)); assertEquals(4, cal.get(Calendar.HOUR_OF_DAY)); assertEquals(15, cal.get(Calendar.MINUTE)); assertEquals(31, cal.get(Calendar.SECOND)); TimeZone localTz = TimeZone.getDefault(); TimeZone tzLA = TimeZone.getTimeZone("America/Los_Angeles"); long txDiff = localTz.getRawOffset() + localTz.getDSTSavings() - tzLA.getRawOffset() - tzLA.getDSTSavings(); x.setTimeZone(tzLA); Calendar expectedDate = Calendar.getInstance(); expectedDate.setTimeInMillis(then.getTime() + txDiff); then = x.parse(s); cal = Calendar.getInstance(); cal.clear(); cal.setTime(then); assertEquals(expectedDate.get(Calendar.YEAR), cal.get(Calendar.YEAR)); assertEquals(expectedDate.get(Calendar.MONTH), cal.get(Calendar.MONTH)); // Sept assertEquals(expectedDate.get(Calendar.DAY_OF_MONTH), cal.get(Calendar.DAY_OF_MONTH)); assertEquals(expectedDate.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.HOUR_OF_DAY)); assertEquals(expectedDate.get(Calendar.MINUTE), cal.get(Calendar.MINUTE)); assertEquals(expectedDate.get(Calendar.SECOND), cal.get(Calendar.SECOND)); }
Example 11
Source File: FastDateParser.java From logging-log4j2 with Apache License 2.0 | 4 votes |
TzInfo(final TimeZone tz, final boolean useDst) { zone = tz; dstOffset = useDst ?tz.getDSTSavings() :0; }
Example 12
Source File: PrayTime.java From PrayTime-Android with Apache License 2.0 | 4 votes |
private double detectDaylightSaving() { TimeZone timez = TimeZone.getDefault(); double hoursDiff = timez.getDSTSavings(); return hoursDiff; }
Example 13
Source File: Util.java From Bats with Apache License 2.0 | 4 votes |
/** * Writes a daylight savings time transition to a POSIX timezone * description. * * @param tz Timezone * @param buf Buffer to append to * @param mode Transition mode * @param day Day of transition * @param month Month of transition * @param dayOfWeek Day of week of transition * @param time Time of transition in millis * @param timeMode Mode of time transition * @param verbose Verbose * @param isEnd Whether this transition is leaving DST */ private static void appendPosixDaylightTransition( TimeZone tz, StringBuilder buf, int mode, int day, int month, int dayOfWeek, int time, int timeMode, boolean verbose, boolean isEnd) { buf.append(','); int week = day; switch (mode) { case 1: // SimpleTimeZone.DOM_MODE throw Util.needToImplement(0); case 3: // SimpleTimeZone.DOW_GE_DOM_MODE // If the day is 1, 8, 15, 22, we can translate this to case 2. switch (day) { case 1: week = 1; // 1st week of month break; case 8: week = 2; // 2nd week of month break; case 15: week = 3; // 3rd week of month break; case 22: week = 4; // 4th week of month break; default: throw new AssertionError( "POSIX timezone format cannot represent " + tz); } // fall through case 2: // SimpleTimeZone.DOW_IN_MONTH_MODE buf.append('M'); buf.append(month + 1); // 1 <= m <= 12 buf.append('.'); if (week == -1) { // java represents 'last week' differently from POSIX week = 5; } buf.append(week); // 1 <= n <= 5, 5 means 'last' buf.append('.'); buf.append(dayOfWeek - 1); // 0 <= d <= 6, 0=Sunday break; case 4: // SimpleTimeZone.DOW_LE_DOM_MODE throw Util.needToImplement(0); default: throw new AssertionError("unexpected value: " + mode); } switch (timeMode) { case 0: // SimpleTimeZone.WALL_TIME break; case 1: // SimpleTimeZone.STANDARD_TIME, e.g. Australia/Sydney if (isEnd) { time += tz.getDSTSavings(); } break; case 2: // SimpleTimeZone.UTC_TIME, e.g. Europe/Paris time += tz.getRawOffset(); if (isEnd) { time += tz.getDSTSavings(); } break; } if (verbose || (time != 7200000)) { // POSIX allows us to omit the time if it is 2am (the default) buf.append('/'); appendPosixTime(buf, time); } }
Example 14
Source File: OpenFitApi.java From OpenFit with MIT License | 4 votes |
public static byte[] getCurrentTimeInfo(boolean is24Hour) { //011E0000000141CB3555F8FFFFFF000000000101010201A01DFC5490D43556100E0000 //01 //1e000000 //01 //41cb3555 //f8ffffff //00000000 //01 //01 //01 //02 //01 //a01dfc54 //90d43556 //100e0000 // build time data int millis = (int)(System.currentTimeMillis() / 1000L); Calendar oCalendar = Calendar.getInstance(); TimeZone oTimeZone = oCalendar.getTimeZone(); int i = oTimeZone.getRawOffset() / 60000; int j = i / 60; int k = i % 60; Date oDate = oCalendar.getTime(); boolean inDaylightTime = oTimeZone.inDaylightTime(oDate); boolean useDaylightTime = oTimeZone.useDaylightTime(); long l = oCalendar.getTimeInMillis(); int m = (int)(OpenFitTimeZoneUtil.prevTransition(oTimeZone, l) / 1000L); int n = (int)(OpenFitTimeZoneUtil.nextTransition(oTimeZone, l) / 1000L); int dst = oTimeZone.getDSTSavings() / 1000; // write time data OpenFitVariableDataComposer oVDC = new OpenFitVariableDataComposer(); oVDC.writeByte((byte)1); oVDC.writeInt(millis); oVDC.writeInt(j); oVDC.writeInt(k); oVDC.writeByte(OpenFitData.TEXT_DATE_FORMAT_TYPE); //oVDC.writeBoolean(OpenFitData.IS_TIME_DISPLAY_24); oVDC.writeBoolean(is24Hour); oVDC.writeBoolean(inDaylightTime); oVDC.writeByte(OpenFitData.NUMBER_DATE_FORMAT_TYPE); oVDC.writeBoolean(useDaylightTime); oVDC.writeInt(m); oVDC.writeInt(n); oVDC.writeInt(dst); int length = oVDC.toByteArray().length; // write time byte array OpenFitVariableDataComposer oVariableDataComposer = new OpenFitVariableDataComposer(); oVariableDataComposer.writeByte((byte)1); oVariableDataComposer.writeInt(length); oVariableDataComposer.writeBytes(oVDC.toByteArray()); return oVariableDataComposer.toByteArray(); }
Example 15
Source File: AnalyticsEvent.java From APICloud-Studio with GNU General Public License v3.0 | 4 votes |
private void init() { // Setup full event string that will be used in ping StringBuilder event = new StringBuilder(); IAnalyticsUserManager userManager = getUserManager(); IAnalyticsUser user = (userManager == null) ? null : userManager.getUser(); addPostEntry(event, "event", eventName); //$NON-NLS-1$ addPostEntry(event, "type", eventType); //$NON-NLS-1$ if (StringUtil.isEmpty(sessionId)) { if (user != null) { sessionId = user.getSessionID(); } if (StringUtil.isEmpty(sessionId)) { sessionId = UUID.randomUUID().toString(); } } addPostEntry(event, "sid", sessionId); //$NON-NLS-1$ addPostEntry(event, "guid", APP_INFO.getAppGuid()); //$NON-NLS-1$ addPostEntry(event, "mid", CorePlugin.getMID()); //$NON-NLS-1$ addPostEntry(event, "app_id", APP_INFO.getAppId()); //$NON-NLS-1$ addPostEntry(event, "creator_user_id", (user == null) ? StringUtil.EMPTY : user.getUID()); //$NON-NLS-1$ addPostEntry(event, "app_name", APP_INFO.getAppName()); //$NON-NLS-1$ addPostEntry(event, "app_version", EclipseUtil.getPluginVersion(APP_INFO.getVersionPluginId())); //$NON-NLS-1$ addPostEntry(event, "mac_addr", MACAddress.getMACAddress()); //$NON-NLS-1$ addPostEntry(event, "platform", Platform.OS_MACOSX.equals(Platform.getOS()) ? "osx" : Platform.getOS()); //$NON-NLS-1$ //$NON-NLS-2$ // This field was used for the versions of titanium sdk that developer was build on. This does not apply to // studio so we are leaving it as 1.1.0 for now. addPostEntry(event, "version", "1.1.0"); //$NON-NLS-1$ //$NON-NLS-2$ addPostEntry(event, "os", System.getProperty("os.name")); //$NON-NLS-1$ //$NON-NLS-2$ addPostEntry(event, "ostype", System.getProperty("sun.arch.data.model") + "bit"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ addPostEntry(event, "osver", System.getProperty("os.version")); //$NON-NLS-1$ //$NON-NLS-2$ addPostEntry(event, "osarch", System.getProperty("os.arch")); //$NON-NLS-1$ //$NON-NLS-2$ addPostEntry(event, "oscpu", Integer.toString(Runtime.getRuntime().availableProcessors())); //$NON-NLS-1$ addPostEntry(event, "un", (user == null) ? StringUtil.EMPTY : user.getUsername()); //$NON-NLS-1$ addPostEntry(event, "ver", SPEC_VERSION); //$NON-NLS-1$ TimeZone tz = TimeZone.getDefault(); int results = -(tz.getDSTSavings() + tz.getRawOffset()); results = (results / 1000) / 60; addPostEntry(event, "tz", Integer.toString(results)); //$NON-NLS-1$ InetAddress ip; try { ip = InetAddress.getLocalHost(); addPostEntry(event, "ip", ip.getHostAddress()); //$NON-NLS-1$ } catch (UnknownHostException e) { addPostEntry(event, "ip", StringUtil.EMPTY); //$NON-NLS-1$ } if (!EMPTY_JSON_PAYLOAD.equals(getJSONPayloadString())) { // We need to strip the quotes surrounding the languageModules entry, also unescape quotes inside the entry String formattedJSON = getJSONPayloadString(); if (formattedJSON.contains("languageModules")) //$NON-NLS-1$ { formattedJSON = formattedJSON.replace("\"{", "{"); //$NON-NLS-1$ //$NON-NLS-2$ formattedJSON = formattedJSON.replace("}\"", "}"); //$NON-NLS-1$ //$NON-NLS-2$ formattedJSON = formattedJSON.replace("\\\"", "\""); //$NON-NLS-1$ //$NON-NLS-2$ } addPostEntry(event, "data", formattedJSON); //$NON-NLS-1$ } // Remove the extra & that we insert event.deleteCharAt(event.lastIndexOf("&")); //$NON-NLS-1$ eventString = event.toString(); }
Example 16
Source File: SimpleDateFormat.java From jdk8u60 with GNU General Public License v2.0 | 4 votes |
/** * find time zone 'text' matched zoneStrings and set to internal * calendar. */ private int subParseZoneString(String text, int start, CalendarBuilder calb) { boolean useSameName = false; // true if standard and daylight time use the same abbreviation. TimeZone currentTimeZone = getTimeZone(); // At this point, check for named time zones by looking through // the locale data from the TimeZoneNames strings. // Want to be able to parse both short and long forms. int zoneIndex = formatData.getZoneIndex(currentTimeZone.getID()); TimeZone tz = null; String[][] zoneStrings = formatData.getZoneStringsWrapper(); String[] zoneNames = null; int nameIndex = 0; if (zoneIndex != -1) { zoneNames = zoneStrings[zoneIndex]; if ((nameIndex = matchZoneString(text, start, zoneNames)) > 0) { if (nameIndex <= 2) { // Check if the standard name (abbr) and the daylight name are the same. useSameName = zoneNames[nameIndex].equalsIgnoreCase(zoneNames[nameIndex + 2]); } tz = TimeZone.getTimeZone(zoneNames[0]); } } if (tz == null) { zoneIndex = formatData.getZoneIndex(TimeZone.getDefault().getID()); if (zoneIndex != -1) { zoneNames = zoneStrings[zoneIndex]; if ((nameIndex = matchZoneString(text, start, zoneNames)) > 0) { if (nameIndex <= 2) { useSameName = zoneNames[nameIndex].equalsIgnoreCase(zoneNames[nameIndex + 2]); } tz = TimeZone.getTimeZone(zoneNames[0]); } } } if (tz == null) { int len = zoneStrings.length; for (int i = 0; i < len; i++) { zoneNames = zoneStrings[i]; if ((nameIndex = matchZoneString(text, start, zoneNames)) > 0) { if (nameIndex <= 2) { useSameName = zoneNames[nameIndex].equalsIgnoreCase(zoneNames[nameIndex + 2]); } tz = TimeZone.getTimeZone(zoneNames[0]); break; } } } if (tz != null) { // Matched any ? if (!tz.equals(currentTimeZone)) { setTimeZone(tz); } // If the time zone matched uses the same name // (abbreviation) for both standard and daylight time, // let the time zone in the Calendar decide which one. // // Also if tz.getDSTSaving() returns 0 for DST, use tz to // determine the local time. (6645292) int dstAmount = (nameIndex >= 3) ? tz.getDSTSavings() : 0; if (!(useSameName || (nameIndex >= 3 && dstAmount == 0))) { calb.clear(Calendar.ZONE_OFFSET).set(Calendar.DST_OFFSET, dstAmount); } return (start + zoneNames[nameIndex].length()); } return 0; }
Example 17
Source File: SimpleDateFormat.java From openjdk-8 with GNU General Public License v2.0 | 4 votes |
/** * find time zone 'text' matched zoneStrings and set to internal * calendar. */ private int subParseZoneString(String text, int start, CalendarBuilder calb) { boolean useSameName = false; // true if standard and daylight time use the same abbreviation. TimeZone currentTimeZone = getTimeZone(); // At this point, check for named time zones by looking through // the locale data from the TimeZoneNames strings. // Want to be able to parse both short and long forms. int zoneIndex = formatData.getZoneIndex(currentTimeZone.getID()); TimeZone tz = null; String[][] zoneStrings = formatData.getZoneStringsWrapper(); String[] zoneNames = null; int nameIndex = 0; if (zoneIndex != -1) { zoneNames = zoneStrings[zoneIndex]; if ((nameIndex = matchZoneString(text, start, zoneNames)) > 0) { if (nameIndex <= 2) { // Check if the standard name (abbr) and the daylight name are the same. useSameName = zoneNames[nameIndex].equalsIgnoreCase(zoneNames[nameIndex + 2]); } tz = TimeZone.getTimeZone(zoneNames[0]); } } if (tz == null) { zoneIndex = formatData.getZoneIndex(TimeZone.getDefault().getID()); if (zoneIndex != -1) { zoneNames = zoneStrings[zoneIndex]; if ((nameIndex = matchZoneString(text, start, zoneNames)) > 0) { if (nameIndex <= 2) { useSameName = zoneNames[nameIndex].equalsIgnoreCase(zoneNames[nameIndex + 2]); } tz = TimeZone.getTimeZone(zoneNames[0]); } } } if (tz == null) { int len = zoneStrings.length; for (int i = 0; i < len; i++) { zoneNames = zoneStrings[i]; if ((nameIndex = matchZoneString(text, start, zoneNames)) > 0) { if (nameIndex <= 2) { useSameName = zoneNames[nameIndex].equalsIgnoreCase(zoneNames[nameIndex + 2]); } tz = TimeZone.getTimeZone(zoneNames[0]); break; } } } if (tz != null) { // Matched any ? if (!tz.equals(currentTimeZone)) { setTimeZone(tz); } // If the time zone matched uses the same name // (abbreviation) for both standard and daylight time, // let the time zone in the Calendar decide which one. // // Also if tz.getDSTSaving() returns 0 for DST, use tz to // determine the local time. (6645292) int dstAmount = (nameIndex >= 3) ? tz.getDSTSavings() : 0; if (!(useSameName || (nameIndex >= 3 && dstAmount == 0))) { calb.clear(Calendar.ZONE_OFFSET).set(Calendar.DST_OFFSET, dstAmount); } return (start + zoneNames[nameIndex].length()); } return 0; }
Example 18
Source File: SimpleDateFormat.java From dragonwell8_jdk with GNU General Public License v2.0 | 4 votes |
/** * find time zone 'text' matched zoneStrings and set to internal * calendar. */ private int subParseZoneString(String text, int start, CalendarBuilder calb) { boolean useSameName = false; // true if standard and daylight time use the same abbreviation. TimeZone currentTimeZone = getTimeZone(); // At this point, check for named time zones by looking through // the locale data from the TimeZoneNames strings. // Want to be able to parse both short and long forms. int zoneIndex = formatData.getZoneIndex(currentTimeZone.getID()); TimeZone tz = null; String[][] zoneStrings = formatData.getZoneStringsWrapper(); String[] zoneNames = null; int nameIndex = 0; if (zoneIndex != -1) { zoneNames = zoneStrings[zoneIndex]; if ((nameIndex = matchZoneString(text, start, zoneNames)) > 0) { if (nameIndex <= 2) { // Check if the standard name (abbr) and the daylight name are the same. useSameName = zoneNames[nameIndex].equalsIgnoreCase(zoneNames[nameIndex + 2]); } tz = TimeZone.getTimeZone(zoneNames[0]); } } if (tz == null) { zoneIndex = formatData.getZoneIndex(TimeZone.getDefault().getID()); if (zoneIndex != -1) { zoneNames = zoneStrings[zoneIndex]; if ((nameIndex = matchZoneString(text, start, zoneNames)) > 0) { if (nameIndex <= 2) { useSameName = zoneNames[nameIndex].equalsIgnoreCase(zoneNames[nameIndex + 2]); } tz = TimeZone.getTimeZone(zoneNames[0]); } } } if (tz == null) { int len = zoneStrings.length; for (int i = 0; i < len; i++) { zoneNames = zoneStrings[i]; if ((nameIndex = matchZoneString(text, start, zoneNames)) > 0) { if (nameIndex <= 2) { useSameName = zoneNames[nameIndex].equalsIgnoreCase(zoneNames[nameIndex + 2]); } tz = TimeZone.getTimeZone(zoneNames[0]); break; } } } if (tz != null) { // Matched any ? if (!tz.equals(currentTimeZone)) { setTimeZone(tz); } // If the time zone matched uses the same name // (abbreviation) for both standard and daylight time, // let the time zone in the Calendar decide which one. // // Also if tz.getDSTSaving() returns 0 for DST, use tz to // determine the local time. (6645292) int dstAmount = (nameIndex >= 3) ? tz.getDSTSavings() : 0; if (!(useSameName || (nameIndex >= 3 && dstAmount == 0))) { calb.clear(Calendar.ZONE_OFFSET).set(Calendar.DST_OFFSET, dstAmount); } return (start + zoneNames[nameIndex].length()); } return -start; }
Example 19
Source File: Util.java From Quicksql with MIT License | 4 votes |
/** * Writes a daylight savings time transition to a POSIX timezone * description. * * @param tz Timezone * @param buf Buffer to append to * @param mode Transition mode * @param day Day of transition * @param month Month of transition * @param dayOfWeek Day of week of transition * @param time Time of transition in millis * @param timeMode Mode of time transition * @param verbose Verbose * @param isEnd Whether this transition is leaving DST */ private static void appendPosixDaylightTransition( TimeZone tz, StringBuilder buf, int mode, int day, int month, int dayOfWeek, int time, int timeMode, boolean verbose, boolean isEnd) { buf.append(','); int week = day; switch (mode) { case 1: // SimpleTimeZone.DOM_MODE throw Util.needToImplement(0); case 3: // SimpleTimeZone.DOW_GE_DOM_MODE // If the day is 1, 8, 15, 22, we can translate this to case 2. switch (day) { case 1: week = 1; // 1st week of month break; case 8: week = 2; // 2nd week of month break; case 15: week = 3; // 3rd week of month break; case 22: week = 4; // 4th week of month break; default: throw new AssertionError( "POSIX timezone format cannot represent " + tz); } // fall through case 2: // SimpleTimeZone.DOW_IN_MONTH_MODE buf.append('M'); buf.append(month + 1); // 1 <= m <= 12 buf.append('.'); if (week == -1) { // java represents 'last week' differently from POSIX week = 5; } buf.append(week); // 1 <= n <= 5, 5 means 'last' buf.append('.'); buf.append(dayOfWeek - 1); // 0 <= d <= 6, 0=Sunday break; case 4: // SimpleTimeZone.DOW_LE_DOM_MODE throw Util.needToImplement(0); default: throw new AssertionError("unexpected value: " + mode); } switch (timeMode) { case 0: // SimpleTimeZone.WALL_TIME break; case 1: // SimpleTimeZone.STANDARD_TIME, e.g. Australia/Sydney if (isEnd) { time += tz.getDSTSavings(); } break; case 2: // SimpleTimeZone.UTC_TIME, e.g. Europe/Paris time += tz.getRawOffset(); if (isEnd) { time += tz.getDSTSavings(); } break; } if (verbose || (time != 7200000)) { // POSIX allows us to omit the time if it is 2am (the default) buf.append('/'); appendPosixTime(buf, time); } }
Example 20
Source File: SimpleDateFormat.java From jdk1.8-source-analysis with Apache License 2.0 | 4 votes |
/** * find time zone 'text' matched zoneStrings and set to internal * calendar. */ private int subParseZoneString(String text, int start, CalendarBuilder calb) { boolean useSameName = false; // true if standard and daylight time use the same abbreviation. TimeZone currentTimeZone = getTimeZone(); // At this point, check for named time zones by looking through // the locale data from the TimeZoneNames strings. // Want to be able to parse both short and long forms. int zoneIndex = formatData.getZoneIndex(currentTimeZone.getID()); TimeZone tz = null; String[][] zoneStrings = formatData.getZoneStringsWrapper(); String[] zoneNames = null; int nameIndex = 0; if (zoneIndex != -1) { zoneNames = zoneStrings[zoneIndex]; if ((nameIndex = matchZoneString(text, start, zoneNames)) > 0) { if (nameIndex <= 2) { // Check if the standard name (abbr) and the daylight name are the same. useSameName = zoneNames[nameIndex].equalsIgnoreCase(zoneNames[nameIndex + 2]); } tz = TimeZone.getTimeZone(zoneNames[0]); } } if (tz == null) { zoneIndex = formatData.getZoneIndex(TimeZone.getDefault().getID()); if (zoneIndex != -1) { zoneNames = zoneStrings[zoneIndex]; if ((nameIndex = matchZoneString(text, start, zoneNames)) > 0) { if (nameIndex <= 2) { useSameName = zoneNames[nameIndex].equalsIgnoreCase(zoneNames[nameIndex + 2]); } tz = TimeZone.getTimeZone(zoneNames[0]); } } } if (tz == null) { int len = zoneStrings.length; for (int i = 0; i < len; i++) { zoneNames = zoneStrings[i]; if ((nameIndex = matchZoneString(text, start, zoneNames)) > 0) { if (nameIndex <= 2) { useSameName = zoneNames[nameIndex].equalsIgnoreCase(zoneNames[nameIndex + 2]); } tz = TimeZone.getTimeZone(zoneNames[0]); break; } } } if (tz != null) { // Matched any ? if (!tz.equals(currentTimeZone)) { setTimeZone(tz); } // If the time zone matched uses the same name // (abbreviation) for both standard and daylight time, // let the time zone in the Calendar decide which one. // // Also if tz.getDSTSaving() returns 0 for DST, use tz to // determine the local time. (6645292) int dstAmount = (nameIndex >= 3) ? tz.getDSTSavings() : 0; if (!(useSameName || (nameIndex >= 3 && dstAmount == 0))) { calb.clear(Calendar.ZONE_OFFSET).set(Calendar.DST_OFFSET, dstAmount); } return (start + zoneNames[nameIndex].length()); } return -start; }