Avatar billede aslan Nybegynder
25. juni 2002 - 12:24 Der er 13 kommentarer og
1 løsning

convertere Date?

Hvorfor er dette forkert jeg vil gerne have skrevet datoen fra db i en anden format men det giver fejl?

void test(java.sql.Date dato)
{

    SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy");
    java.sql.Date nyDato;
    try
    {
        nyDato = df.parse(dato);
    } catch (ParseException p){ System.out.println(p);}

    System.out.println(nyDato);
}
Avatar billede soreno Praktikant
25. juni 2002 - 12:29 #1
hvilken fejl ?
Avatar billede aslan Nybegynder
25. juni 2002 - 12:30 #2
C:\Program Files\nusphere\apache\htdocs\modelKomponent\Funktioner.java:76: cannot resolve symbol
symbol  : method parse  (java.sql.Date)
location: class java.text.SimpleDateFormat
        nyDato = df.parse(dato);
                          ^
1 error

Tool completed with exit code 1
Avatar billede soreno Praktikant
25. juni 2002 - 12:41 #3
prøv at forklare hvad metoden skal gøre.
Avatar billede aslan Nybegynder
25. juni 2002 - 12:48 #4
Jamen datoen jeg får fra db ser sådan ud: yyyy-MM-dd

Det skal laves om til dansk standard som er dd-MM-yyyy
Avatar billede soreno Praktikant
25. juni 2002 - 12:54 #5
og lægges over i en java.sql.Date ??

konstruktørene ser sådan ud for java.sql.Data (i jdk1.4):
Date(int year, int month, int day)
          Deprecated. instead use the constructor Date(long date)

Date(long date)
          Constructs a Date object using the given milliseconds time value.

for mig at se giver det ikke mening at ændre repræsentationen af java.sql.Date, først når den hives ud af databasen ville jeg parse den til et "bedre" format - og derefter eks. vise den på skærmen. Alternativ skal den nok gemmes som en string hvis det er fordi databasen er koblet sammen med andre programmer og du kun ønsker at parse datoen én gang ?
Avatar billede soreno Praktikant
25. juni 2002 - 12:59 #6
er det det her du mener:
import java.io.*;
import java.util.*;
import java.text.*;
import java.util.regex.*;

public class Main
{
    public static void test(java.sql.Date dato)
    {

        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        Date nyDato = new Date();
        try
        {
            nyDato = df.parse(dato.toString());
        }
        catch(ParseException e)
        {
            e.printStackTrace();
        }
        System.out.println(nyDato);
        System.out.println(nyDato.getYear());
    }
   
    public static void main(String args[])
    {
        java.sql.Date test = new java.sql.Date(12345);
        test(test);
    }
}
Avatar billede soreno Praktikant
25. juni 2002 - 13:00 #7
så får du en java.util.Date der svare til den java.sql.Date som er input.
Avatar billede aslan Nybegynder
25. juni 2002 - 13:02 #8
Problemet er at når man skriver datoen ind i databasen sker det via formen dd-MM-yyyy som en JFormattedTextField sørger for at bliver skrevet i rigtig format. Når jeg så henter en række ud som skal skrives i JFormattedTextField igen så man kan opdatere i det passer den ikke ind i den fordi db laver formen dd-MM-yyyy til yyyy-MM-dd.
Avatar billede soreno Praktikant
25. juni 2002 - 13:09 #9
så prøv dette:

public static void test(java.sql.Date dato)
{

    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); //som passer til java.sql.Date
    Date nyDato = new Date();
    try
    {
        nyDato = df.parse(dato.toString());
    }
    catch(ParseException e)
    {
        e.printStackTrace();
    }
    df = new SimpleDateFormat("dd-MM-yyyy");//som skal over i swing komponent
    System.out.println(df.format(nyDato));
}

public static void main(String args[])
{
    java.sql.Date test = new java.sql.Date(12345);
    test(test);
}
Avatar billede aslan Nybegynder
25. juni 2002 - 13:19 #10
Hvordan får jeg så metoden til at returnere en værdi?

public static java.sql.Date test(java.sql.Date dato)
{

    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); //som passer til java.sql.Date
    Date nyDato = new Date();
    try
    {
        nyDato = df.parse(dato.toString());
    }
    catch(ParseException e)
    {
        e.printStackTrace();
    }
    df = new SimpleDateFormat("dd-MM-yyyy");//som skal over i swing komponent
    return df.format(nyDato);
}
Avatar billede aslan Nybegynder
25. juni 2002 - 13:22 #11
får denne fejl

C:\Program Files\nusphere\apache\htdocs\modelKomponent\Funktioner.java:83: incompatible types
found  : java.lang.String
required: java.sql.Date
    return df.format(nyDato);
                    ^
1 error

Tool completed with exit code 1
Avatar billede soreno Praktikant
25. juni 2002 - 13:23 #12
public (static) String test(java.sql.Date dato)
{
  ..
  return df.format(nyDato);
}

den er kun static i mit eksempel fordi jeg testede sammen med min main metode.
Avatar billede soreno Praktikant
25. juni 2002 - 13:24 #13
df.format(nyDato) returnerer en string med formatet dd-MM-yyyy
Avatar billede aslan Nybegynder
25. juni 2002 - 13:30 #14
takker det virker...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester