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:
Ici, le résultat obtenu était 2012-08-07 0, mais la requête équivalente en renvoie 3. Pourquoi ai-je 0?
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);
// 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();
Juste:
Timestamp timestamp = new Timestamp(long);
Date date = new Date(timestamp.getTime());
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));
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!
Timestamp tsp = new Timestamp(System.currentTimeMillis());
Java.util.Date dateformat = new Java.util.Date(tsp.getTime());
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);
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.
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 .)
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 toDate
statement.
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);
En supposant que vous ayez un Java.util.Date date
préexistant:
Timestamp timestamp = new Timestamp(long);
date.setTime( l_timestamp.getTime() );
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();
}