web-dev-qa-db-fra.com

Comment convertir TimeStamp to Date en Java?

Comment convertir 'timeStamp' en date après avoir obtenu le nombre en java?

Mon code actuel est le suivant:

public class GetCurrentDateTime {

    public int data() {
        int count = 0;
        Java.sql.Timestamp timeStamp = new Timestamp(System.currentTimeMillis());
        Java.sql.Date date = new Java.sql.Date(timeStamp.getTime()); 
        System.out.println(date);
        //count++;

        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/pro", "root", "");

            PreparedStatement statement = con.prepareStatement("select * from orders where status='Q' AND date=CURDATE()");
            ResultSet result = statement.executeQuery();
            while (result.next()) {
                // Do something with the row returned.
                count++; //if the first col is a count.
            }
        } catch (Exception exc) {
            System.out.println(exc.getMessage());
        }

        return count;
    }
}

Ceci est ma base de données: enter image description here

Ici, le résultat obtenu était 2012-08-07 0, mais la requête équivalente en renvoie 3. Pourquoi ai-je 0?

87
Krishna Veni

Créez simplement un nouvel objet Date avec la valeur getTime() du tampon en tant que paramètre.

Voici un exemple (j'utilise un exemple d'horodatage de l'heure actuelle):

Timestamp stamp = new Timestamp(System.currentTimeMillis());
Date date = new Date(stamp.getTime());
System.out.println(date);
164
Alex Coleman
// timestamp to Date
long timestamp = 5607059900000; //Example -> in ms
Date d = new Date(timestamp );

// Date to timestamp
long timestamp = d.getTime();

//If you want the current timestamp :
Calendar c = Calendar.getInstance();
long timestamp = c.getTimeInMillis();
34
VincentLamoute

Juste:

Timestamp timestamp = new Timestamp(long);
Date date = new Date(timestamp.getTime());
10
Alberto Cerqueira

Je cherche cela depuis longtemps, il s'avère que Convertisseur Eposh le fait facilement:

long Epoch = new Java.text.SimpleDateFormat("MM/dd/yyyy HH:mm:ss").parse("01/01/1970 01:00:00").getTime() / 1000;

Ou le contraire: 

String date = new Java.text.SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(new Java.util.Date (Epoch*1000));
5
Joker 00

Tout d’abord, vous n’exploitez pas l’avantage d’utiliser PreparedStatement. Je voudrais tout d’abord vous suggérer de modifier votre PreparedStatement comme suit:

PreparedStatement statement = con.prepareStatement("select * from orders where status=? AND date=?")

Vous pouvez ensuite utiliser statement.setXX(param_index, param_value) pour définir les valeurs respectives. Pour la conversion en timestamp, consultez les javadocs suivants:

PreparedStatement.setTimeStamp ()
Horodatage

J'espère que cela t'aides!

4
Sujay
    Timestamp tsp = new Timestamp(System.currentTimeMillis());
   Java.util.Date dateformat = new Java.util.Date(tsp.getTime());
3
MR AND

Vous ne savez pas exactement ce que vous essayez de sélectionner dans la requête, mais gardez à l'esprit que UNIX_TIMESTAMP() sans arguments renvoie l'heure maintenant. Vous devriez probablement fournir une heure valide comme argument ou changer la condition. 

MODIFIER: 

Voici un exemple de requête limitée dans le temps basée sur la question: 

PreparedStatement statement = con
        .prepareStatement("select * from orders where status='Q' AND date > ?");
Date date = new SimpleDateFormat("dd/MM/yyyy").parse("01/01/2000");
statement.setDate(1, new Java.sql.Date(date.getTime()));

EDIT: colonne timestamp

En cas d'horodatage, utilisez Java.sql.Timestamp et PreparedStatement.setTimestamp () , c'est-à-dire: 

PreparedStatement statement = con
        .prepareStatement("select * from orders where status='Q' AND date > ?");
Date date = new SimpleDateFormat("dd/MM/yyyy").parse("01/01/2000");
Timestamp timestamp = new Timestamp(date.getTime());
statement.setTimestamp(1, timestamp);
3
tenorsax

Dans Android c'est très simple. Il suffit d'utiliser la classe Calendar pour obtenir currentTimeMillis.

Timestamp stamp = new Timestamp(Calendar.getInstance().getTimeInMillis());
Date date = new Date(stamp.getTime());
Log.d("Current date Time is   "  +date.toString());

En Java, utilisez uniquement System.currentTimeMillis () pour obtenir l’horodatage actuel. 

3
Ashish Saini

new Date(timestamp.getTime()) devrait fonctionner, mais la nouvelle manière élégante de Java 8 (qui peut être plus élégante et plus sûre, ainsi que vous aider à utiliser les nouvelles classes de temps) consiste à appeler Date.from(timestamp.toInstant()).

(Ne vous fiez pas au fait que Timestamp est lui-même une instance de Date; voir l'explication dans les commentaires de autre réponse .)

3
Garret Wilson

Je me sens obligé de répondre car d’autres réponses semblent ne pas comporter de fuseau horaire, ce qu’une application réelle ne peut se permettre. Pour que la conversion horodatage à jour soit correcte lorsque l'horodatage et la machine virtuelle Java utilisent des fuseaux horaires différents, vous pouvez utiliser LocalDateTime de Joda Time (ou LocalDateTime en Java8) comme ceci:

Timestamp timestamp = resultSet.getTimestamp("time_column");
LocalDateTime localDateTime = new LocalDateTime(timestamp);
Date trueDate = localDateTime.toDate(DateTimeZone.UTC.toTimeZone());

L'exemple ci-dessous suppose que l'horodatage est UTC (comme c'est généralement le cas avec les bases de données). Si vos horodatages se trouvent dans un fuseau horaire différent, modifiez le paramètre timezone de la toDatestatement.

2
Robert Mugattarov

essayez d'utiliser ce code Java:

enter code here 

  Timestamp stamp = new Timestamp(System.currentTimeMillis());
  Date date = new Date(stamp.getTime());
  DateFormat f = new SimpleDateFormat("yyyy-MM-dd");
  DateFormat f1 = new SimpleDateFormat("yyyy/MM/dd");
  String d=f.format(date);
  String d1=f1.format(date);
  System.out.println(d);
  System.out.println(d1);
0
Help developer

En supposant que vous ayez un Java.util.Date date préexistant:

Timestamp timestamp = new Timestamp(long);
date.setTime( l_timestamp.getTime() );
0
Albizia

Vous pouvez utiliser cette méthode pour obtenir la date de l'horodatage et du fuseau horaire d'une zone particulière.

public String getDayOfTimestamp(long yourLinuxTimestamp, String timeZone) {
    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(yourLinuxTimestamp * 1000);
    cal.setTimeZone(TimeZone.getTimeZone(timeZone));
    Date date = cal.getTime();
}
0
Manoj Patidar