Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4101483

java.text.SimpleDateFormat.format() doesn't set indexes of FieldPosition object

XMLWordPrintable

    • b01
    • sparc
    • solaris_2.5



      Name: dfC67450 Date: 12/29/97



      java.text.SimpleDateFormat.format(Date n, StringBuffer str, FieldPosition fp) does not
      set indexes of FieldPosition object.

      Javadoc says about pattern chars:

       * To specify the time format use a time pattern string.
       * In this pattern, all ASCII letters are reserved as pattern letters,
       * which are defined as the following:
       *
       * Symbol Meaning Presentation Example
       * ------ ------- ------------ -------
       * G era designator (Text) AD
       * y year (Number) 1996
       * M month in year (Text & Number) July & 07
       * d day in month (Number) 10
       * h hour in am/pm (1~12) (Number) 12
       * H hour in day (0~23) (Number) 0
       * m minute in hour (Number) 30
       * s second in minute (Number) 55
       * S millisecond (Number) 978
       * E day in week (Text) Tuesday
       * D day in year (Number) 189
       * F day of week in month (Number) 2 (2nd Wed in July)
       * w week in year (Number) 27
       * W week in month (Number) 2
       * a am/pm marker (Text) PM
       * k hour in day (1~24) (Number) 24
       * K hour in am/pm (0~11) (Number) 0
       * z time zone (Text) Pacific Standard Time
       * ' escape for text
       * '' single quote
       
      It means the character 'z' corresponds the TIMEZONE_FIELD.

      Here is the test demonstrating the bug:

      -----------------Test.java------------------------
      import java.text.*;
      import java.util.*;

      public class TestDE {
          public static void main (String args[]){
              SimpleDateFormat sdf = new SimpleDateFormat("z", Locale.US);
              FieldPosition fp = new FieldPosition(DateFormat.TIMEZONE_FIELD);
              System.out.println(sdf.format(new Date(9234567890), new StringBuffer(""), fp));
              System.out.println("beginIndex = " + fp.getBeginIndex());
              System.out.println("endIndex = " + fp.getEndIndex());
          }
      }

      ---------Output from the test---------------------
      PST
      beginIndex = 0
      endIndex = 0
      --------------------------------------------------

      ======================================================================

            aliusunw Alan Liu (Inactive)
            dfazunensunw Dmitri Fazunenko (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: