DateFormat is an abstract class of which SimpleDateFormat is a subclass. When you call getDateInstance() what you get back is actually a SimpleDateFormat - however I am under the distinct impression this depends on the locale. Some locales could in theory give back something different again or if the implementation of the factory methods changes in a future JVM maybe it wouldnt use SimpleDateFormat?
You could do an instanceof to check if its a SimpleDateFormat and proceed from there - of course for those locales that dont use SimpleDateFormat then AFAIK you wont be able to get the pattern - this is because pattern is a SimpleDateFormat feature and not a DateFormat thing so if it isnt a SimpleDateFormat (or subclass of SimpleDateFormat) then there isnt a pattern you can make use of anyway! (I could be wrong on that) Out of curiosity I tried the following: Locale[] locales = Locale.getAvailableLocales(); System.out.println("numLocales=" + locales.length); for(int i=0; i < locales.length; i++) { Locale locale = locales[i]; DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, locale); String klass = df.getClass().getName(); if(!("java.text.SimpleDateFormat".equals(klass))) { System.out.println("class for locale" + locale + " is " + df.getClass().getName() ); } } It reported 145 available locales on my JVM. ALL of them used SimpleDateFormat. (But you cant rely on that - and in general its not considered good practice to make assumptions about which implementation class you get back for a factory method that returns a superclass or interface...) Sorry I cant be of more help :-( -----Original Message----- From: Suresh Addagalla [mailto:[EMAIL PROTECTED]] Sent: Friday, 17 January 2003 22:42 To: 'Struts Users Mailing List'; [EMAIL PROTECTED] Subject: RE: [OT] Date format Hi, What I am looking for is how to display the *format*, and not how to display a date in a given format. So, there doesn't seem to be anything provided with the API. I need a method like "toPattern()" of SimpleDateFormat in the DateFormat class because getDateInstance() returns me DateFormat and not SimpleDateFormat. Suresh >-----Original Message----- >From: Andrew Hill [mailto:[EMAIL PROTECTED]] >Sent: Friday, January 17, 2003 9:11 AM >To: Struts Users Mailing List >Subject: RE: [OT] Date format > > >Your best bet is to use the static factory methods in the >DateFormat class. > >ie: >Locale locale = getLocale(request); //Use struts Action method >to get locale > >dateTimeFormat = >ateFormat.getDateTimeInstance( >DateFormat.SHORT,DateFormat.SHORT, locale); >dateFormat = DateFormat.getDateInstance( DateFormat.SHORT, locale); >timeFormat = DateFormat.getTimeInstance( DateFormat.SHORT, locale); > >Its all in the javadocs you know. :-) > ><btw> >In case you were wondering how the java.util.Date.toString() >works, heres >its source code: > >public String toString() { > DateFormat formatter = null; > if (simpleFormatter != null) { > formatter = (DateFormat)simpleFormatter.get(); > } > if (formatter == null) { > /* No cache yet, or cached formatter GC'd */ > formatter = new SimpleDateFormat("EEE MMM dd >HH:mm:ss zzz yyyy", > Locale.US); > simpleFormatter = new SoftReference(formatter); > } > synchronized (formatter) { > formatter.setTimeZone(TimeZone.getDefault()); > return formatter.format(this); > } > } ></btw> > >-----Original Message----- >From: Suresh Addagalla [mailto:[EMAIL PROTECTED]] >Sent: Thursday, 16 January 2003 22:56 >To: [EMAIL PROTECTED] >Subject: Date format > > >Hi, > >Please excuse me for the off-topic question, I need this urgently, so >posting it. > >How can I get the current date format? (style: >DateFormat.SHORT, locale: >Default) > >I used: > >SimpleDateFormat formatter = new SimpleDateFormat() ; >String format = formatter.toPatte rn() ; > >It gives: > >M/d/yy hh:mm a > >But what I want is *only* the date part, excluding the time part of it. > >Thanks, >Suresh -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>