Archief - JAVA Datum conversie

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

bikkerss

Legacy Member
ik zit met het volgende probleem ik heb een database waar datum opgeslagen staan in het amerikaans formaat "2010-05-07" hoe kan ik deze converteren naar het Nederlands formaat zodat de gebruikers deze kunnen bekijken als "07 mei 2010" ?

het formulier is opgbouwd in netbeans desktop app met jformattedtextfields

bikkerss

Legacy Member
ik kom vast te zetten met volgende code

het rare is als ik textb 2 laat opvullen in de code krijg ik volgende error (zie beneden)
waarde wordt wel zichtbaar in de textbox

copy en past ik de waarde zelf in textb2 dan werkt ie correct en doet ie de conversie
iemand een idee ?

code:

jFormattedTextField2.setText("2010-01-05");

Locale dutchLoc = new Locale("nl");
SimpleDateFormat sdf = new SimpleDateFormat("dd MMMM yyyy", dutchLoc);
jFormattedTextField1.setText(sdf.format(jFormattedTextField2.getValue()));


Error:

Exception in thread "AWT-EventQueue-0" java.lang.Error: java.lang.reflect.InvocationTargetException
at org.jdesktop.application.ApplicationAction.actionFailed(ApplicationAction.java:859)
at org.jdesktop.application.ApplicationAction.noProxyActionPerformed(ApplicationAction.java:665)
at org.jdesktop.application.ApplicationAction.actionPerformed(ApplicationAction.java:698)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jdesktop.application.ApplicationAction.noProxyActionPerformed(ApplicationAction.java:662)
... 27 more
Caused by: java.lang.IllegalArgumentException: Cannot format given Object as a Date
at java.text.DateFormat.format(DateFormat.java:281)
at java.text.Format.format(Format.java:140)
at tets.TetsView.eng(TetsView.java:293)

Tw33tst3r

Legacy Member
ik kan mij vergissen want ben nog mr een java-beginner maar heb toch al een paar keer dateformatting moeten gebruiken (weliswaar niet in swing)
komt dit niet gwn omdat je dateformatting op een value van het type text probeert toe te passen?

ik zou de ingelezen datum in een Date object steken en daar dan een format op toepassen die ik toeken aan het textveld, resultaat van een format is nl een value van het type text en vr zover ik weet dient de gegeven waarde voor format van het type Date te zijn

je kan het es proberen in afwachting van de ervaren mensen hier die met een antwoord komen :)

bikkerss

Legacy Member
nee, werkt niet ofwel doe ik iets verkeerd.
het rare vind ik als ik dezelfde waarde gewoon plak in het tekstvak dat ie het wel doet.

Curahee Q

Legacy Member
Gelieve niet het object Date te gebruiken maar GregorianCalendar (zie api). Date is in principe een geflopte klasse, als je in de API kijkt zie je dat alles bijna ook deprecated is.

Geraak je er niet uit aan de hand van de API? Staan kleine voorbeeldjes in het begin
DateFormat (Java Platform SE 6)

NeverwinterX

Legacy Member
bikkerss zei:
ik kom vast te zetten met volgende code

het rare is als ik textb 2 laat opvullen in de code krijg ik volgende error (zie beneden)
waarde wordt wel zichtbaar in de textbox

copy en past ik de waarde zelf in textb2 dan werkt ie correct en doet ie de conversie
iemand een idee ?

code:

jFormattedTextField2.setText("2010-01-05");

Locale dutchLoc = new Locale("nl");
SimpleDateFormat sdf = new SimpleDateFormat("dd MMMM yyyy", dutchLoc);
jFormattedTextField1.setText(sdf.format(jFormattedTextField2.getValue()));


Error:

Exception in thread "AWT-EventQueue-0" java.lang.Error: java.lang.reflect.InvocationTargetException
at org.jdesktop.application.ApplicationAction.actionFailed(ApplicationAction.java:859)
at org.jdesktop.application.ApplicationAction.noProxyActionPerformed(ApplicationAction.java:665)
at org.jdesktop.application.ApplicationAction.actionPerformed(ApplicationAction.java:698)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jdesktop.application.ApplicationAction.noProxyActionPerformed(ApplicationAction.java:662)
... 27 more
Caused by: java.lang.IllegalArgumentException: Cannot format given Object as a Date
at java.text.DateFormat.format(DateFormat.java:281)
at java.text.Format.format(Format.java:140)
at tets.TetsView.eng(TetsView.java:293)

getValue() van JFormattedTextField returnt een Object terwijl format() van SimpleDateFormat een String verwacht. Je moet nog casten.

Het is inderdaad beter om GregorianCalendar te gebruiken ipv Date. Je kan wel SimpleDateFormat blijven gebruiken door de GregorianCalendar om te zetten naar een Date via getTime().

Tw33tst3r

Legacy Member
Curahee Q zei:
Gelieve niet het object Date te gebruiken maar GregorianCalendar (zie api). Date is in principe een geflopte klasse, als je in de API kijkt zie je dat alles bijna ook deprecated is.

Geraak je er niet uit aan de hand van de API? Staan kleine voorbeeldjes in het begin
DateFormat (Java Platform SE 6)

nie dak de thread wil hijacken, mr is die al lang deprecated? was mij bij opzoeken van methods al es opgevallen dat er een deel depcrated bij stond mr nie bij stilgestaan da de hele klasse Date deprecated is
alleszins morgen es van mijn oren maken bij mijn opleiding, elk fuckin vb met datums werkt nog met die klasse (mr kmoet dan ook vr elk voorbeeld aanpassingen doen want als ik het letterlijk overneem compileert het meestal zelfs niet eens :s)

Tw33tst3r

Legacy Member
Cycloon zei:
DateFormat is niet echt deprecated. Date en Time wel, daarvoor heb je nu Calendar (Java 2 Platform SE v1.4.2) tot je beschikking.

ok thx, had pas een "nieuwe" cursus java fundamentals gekregen terwijl ik al halverwege was en daar staat dus nog overal in de voorbeelden en de oplossingen de klasse Date...
de lijst met fouten, bad practices (na gegoogle achtergekomen) en deprecated stuff da ze gebruiken wordt langer met de dag :s :(

Cycloon

Legacy Member
Deprecated betekent op zich niet echt "verboden te gebruiken", maar het is eerder af te raden. Op zich is het ook niet fout om er kennis mee te maken vermits nog veel oude code daar gebruik van zal maken. Maar enige duiding geven zouden ze wel mogen doen.

drazax

Legacy Member
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");

jFormattedTextField2.setText(dateFormat.format(new GregorianCalendar().getTime()).toString());

Hierdoor zou je 10/05/2010 in je textfield moeten krijgen, wat de datum van vandaag is. Nu gewoon 'new GregorianCalendar().getTime()' vervangen door je eigen instantie. :)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan