Avatar billede baitianlong Nybegynder
04. juli 2006 - 15:14 Der er 1 løsning

Underligt datoproblem

Jeg har en masse data i en database, hver post har bl.a. et felt, jeg har kaldt datetime, som indeholder en datetime... f.eks

2006-05-15 05:59:00

Jeg henter data med denne metode:

public static List searchPosts(String ss) {
        Connection c = openDatabase();
        ResultSet rs;
        List res = new ArrayList();
        try {
            Statement stmt = c.createStatement();
            rs = stmt.executeQuery("SELECT * FROM biologyonlinepost WHERE " +
                    "thread LIKE '%" + ss + "%' OR message LIKE '%" + ss + "%' ORDER BY datetime DESC LIMIT 0,10");
            while(rs.next()) {
                BioPost bp = new BioPost();
                bp.setThreadName(rs.getString("thread"));
                bp.setThreadauthor(rs.getString("threadauthor"));
                bp.setDatetime(rs.getDate("datetime"));
                bp.setAuthor(rs.getString("author"));
                bp.setQuote(rs.getString("quote"));
                String temp = rs.getString("message");
                if(temp.length() > 250) temp = temp.substring(0, 250) + "...";
                bp.setMessage(temp);
                bp.setURL(rs.getString("url"));
                res.add(bp);
            }
        } catch (SQLException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }
        return res;
    }

...Her er kode fra jsp siden:

List results = new ArrayList();
    SimpleDateFormat sdf = new SimpleDateFormat();
    sdf.applyPattern("yyyy/MM/dd K:mm:ss a");
    if (request.getMethod() == "POST" && request.getParameter("do") != null) {
        ss = request.getParameter("searchstring");
        results = DatabaseContact.searchPosts(ss);
        didsearch = true;
    }

.............samt

<%
            for (int i = 0; i < results.size(); i++) {
                BioPost bp = (BioPost) results.get(i);
        %>
        <tr>
            <td class="halfbold" valign="top"><%= bp.getThread().getCategory() %></td>
            <td class="halfbold" valign="top"><%= bp.getThreadName() %></td>
            <td class="info" valign="top"><%= bp.getMessage() %></td>
            <td class="italics" valign="top"><%= bp.getAuthor() %></td>
            <td class="small" valign="top"><%= sdf.format(bp.getDatetime()) %></td>
            <td valign="top"><a href="<%= bp.getURL() %>" target="_blank"><%= bp.getURL() %></a></td>
        </tr>
        <%
            }
        %>

Men paa siden vises datoerne som...

2006/07/01 0:00:00 AM

MED ANDRE ORD... TIME, MINUT og SEKUND MANGLER.

Er der nogen bud paa det, jeg har en svag mistanke om at det er relateret til java.sql.date i forhold til java.util.date.

Haaber paa brugbart svar :)
Avatar billede baitianlong Nybegynder
04. juli 2006 - 15:36 #1
Naa, det er fordi rs.getDate returnerer en java.sql.date, som ikke har noget tidsinformation, kun dato... Her er loesningen:

bp.setDatetime(new Date(rs.getTimestamp("datetime").getTime()));
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