List of usage examples for java.text DecimalFormatSymbols getMinusSign
public char getMinusSign()
From source file:Currently.java
/** * Ignores any internal date format, and tries to show a complete * date/timp stamp in extended ISO 8601 format. UTC time (Zulu time) * or a local timezone will be used.<p> * * <table border=1>/*from ww w. j a v a 2s . co m*/ * <tr><th>zone</th><th>format</th><th>fraction</td><th>example</th></tr> * <tr><td>local</td><td>basic</td><td>integral</td><td>20020523T140427-0500</td></tr> * <tr><td>UTC</td><td>basic</td><td>integral</td><td>20020523190427Z</td></tr> * <tr><td>local</td><td>extd.</td><td>integral</td><td>2002-05-23T14:04:27-05:00</td></tr> * <tr><td>UTC</td><td>extd.</td><td>integral</td><td>2002-05-23T19:04:27Z</td></tr> * <tr><td>local</td><td>basic</td><td>millis</td><td>20020523T140427.166-0500</td></tr> * <tr><td>UTC</td><td>basic</td><td>millis</td><td>20020523190427.166Z</td></tr> * <tr><td>local</td><td>extd.</td><td>millis</td><td>2002-05-23T14:04:27.166-05:00</td></tr> * <tr><td>UTC</td><td>extd.</td><td>millis</td><td>2002-05-23T19:04:27.166Z</td></tr> * </table><p> * * @param zuluTime returns a UTC formatted stamp, if true. Otherwise * the time will be formatted according to the local zone. Local time * should be prefixed with the 'T'. * @param extendedFormat will use the extended ISO 8601 format which * separates the different timestamp items. If false, the basic * format will be used. In UTC and basic format, the 'T' separator * will be omitted. * @param withMillis will put the millisecond extension into the timestamp. * If false, the time will be without millisecond fraction. The separator * is taken from {@link java.text.DecimalFormatSymbols#getMinusSign()}, * which usually is a period or a comma. * @param now is a time stamp as Date. * @return an ISO 8601 formatted date and time representation for * the given point in time. */ public static String iso8601(boolean zuluTime, boolean extendedFormat, boolean withMillis, Date now) { Calendar c = Calendar.getInstance(zuluTime ? TimeZone.getTimeZone("UTC") : TimeZone.getDefault()); c.setTime(now); // set up formattting options DecimalFormat nf2 = new DecimalFormat("##00"); DecimalFormat nf3 = new DecimalFormat("###000"); DecimalFormat nf4 = new DecimalFormat("####0000"); DecimalFormatSymbols dfs = nf2.getDecimalFormatSymbols(); // allocate result string buffer int size = extendedFormat ? (zuluTime ? 25 : 30) : (zuluTime ? 21 : 25); if (!withMillis) { size -= 4; } StringBuffer result = new StringBuffer(size); result.append(nf4.format(c.get(Calendar.YEAR))); if (extendedFormat) { result.append('-'); // position 5 } result.append(nf2.format(c.get(Calendar.MONTH) + 1)); if (extendedFormat) { result.append('-'); // position 8 } result.append(nf2.format(c.get(Calendar.DAY_OF_MONTH))); // generating UTC in basic format may leave out the 'T' separator if (extendedFormat || !zuluTime) { result.append('T'); // position 11 } result.append(nf2.format(c.get(Calendar.HOUR_OF_DAY))); if (extendedFormat) { result.append(':'); // position 14 } result.append(nf2.format(c.get(Calendar.MINUTE))); if (extendedFormat) { result.append(':'); // position 17 } result.append(nf2.format(c.get(Calendar.SECOND))); if (withMillis) { // Though there is no explicit spec which allows a complete // timestamp with milliseconds, it is implied through two // levels, sigh. 5.3.4.2 allows decimal fractions with // time-only stamps that have a timezone. The intro of 5.4.2 // allows 5.3.1.3. result.append(dfs.getDecimalSeparator()); // position 20 result.append(nf3.format(c.get(Calendar.MILLISECOND))); } if (zuluTime) { // this is easy result.append('Z'); } else { // time zone calculations int zone_offset = c.get(Calendar.ZONE_OFFSET) / 1000; int save_offset = c.get(Calendar.DST_OFFSET) / 1000; int diff = (zone_offset + save_offset) / 60; result.append(diff < 0 ? dfs.getMinusSign() : '+'); // position 24 if (diff < 0) { diff = Math.abs(diff); } result.append(nf2.format(diff / 60)); if (extendedFormat) { result.append(':'); } result.append(nf2.format(diff % 60)); } return result.toString(); }
From source file:nl.strohalm.cyclos.utils.conversion.NumberConverter.java
public T valueOf(String string) { if (StringUtils.isEmpty(string)) { return null; }/*ww w .ja v a 2s . co m*/ final DecimalFormatSymbols symbols = numberFormat.getDecimalFormatSymbols(); final char minusSign = symbols.getMinusSign(); final char decimalSeparator = symbols.getDecimalSeparator(); final char groupingSeparator = symbols.getGroupingSeparator(); boolean negativeNumber = false; if (string.indexOf(minusSign) > -1) { string = StringUtils.replace(string, String.valueOf(minusSign), ""); negativeNumber = true; } final String[] parts = StringUtils.split(string, String.valueOf(decimalSeparator)); final String integerPart = StringUtils.replace(parts[0], String.valueOf(groupingSeparator), ""); final boolean hasDecimalPart = parts.length > 1; final String decimalPart = hasDecimalPart ? parts[1] : ""; String bigDecimalString = integerPart; if (hasDecimalPart) { bigDecimalString = bigDecimalString + "." + decimalPart; } if (negativeNumber) { bigDecimalString = "-" + bigDecimalString; } final BigDecimal bigDecimal = new BigDecimal(bigDecimalString); T value = CoercionHelper.coerce(numberType, bigDecimal); if (negativeToAbsoluteValue && value != null && value.floatValue() < 0) { value = CoercionHelper.coerce(numberType, -value.floatValue()); } return value; }