définir un timestamp en hh:mm:ss

ExpressJS/Node.js

Le problème exposé dans ce sujet a été résolu.

Bonjour, Ayant crée un bot Discord, lorsqu’on fait la commande "!live (hh:mm:ss)" celu-ci renvoie un timestamp (temps en millisecondes) vers l’heure indiqué par l’utilisateur. Ce timestamp, est relié à un fichier json. J’ai ensuite crée un fichier js (server.js) qui lis le fichier json et qui l’exécute sur une page html. Seulement, j’aimerais que ce timestamp sois défini en un format hh:mm:ss et que le temps s’écoule. Exemple, sur mon discord, grâce à mon bot, je fais la commande "!live 23:00:00" (en sachant qu’il est 21:43), le timestamp est de 1499979600000, sur ma page html, j’ai donc : Image utilisateur

J’aimerais que ce timestamp sois convertis, et que sur ma page web, j’aurais donc : "Le live commence dans hh:mm:ss" et que ça fasse le décompte constamment, même lorsque la page web est rafraîchis, le décompte continuera.

Merci et bonne journée/soirée !

Bah vu que tu as ta date, tu peux récupérer tes heures/minutes/sec sans probleme ?

Donc tu peux la formater avec `\${hh}:\${mm}:\${ss}`

Sinon tu as https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Date/toISOString

On peut vite faire :

new Date(1499979600000).toISOString().slice(-13, -5)
"21:00:00"

AmarOk

Non, j’ai déjà essayé, ça ne marche pas :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
const express = require('express'); // Inclusion de ExpressJS
const fs = require('fs'); // Inclusion de fs (fs.readfile)
const path = require("path");
var app = express(); // Utilisé pour app.get/put/delete/post
var port = 9500; // On définit la valeur du port sur 9500
app.set('view engine', 'ejs');

// URL
app.get('/api', function (req, res) {

// On lit le ficher time.json dans TimeBot/json/time.json. Puis, on envoie "timestamp" dans le res.send.

let ts = fs.readFileSync('./TimeBot/json/time.json', { encoding: 'utf-8' });
res.send(JSON.parse(ts));


});

app.get('/', function (req, res){
      res.send("va pas ici, y'a rien. Va plutôt à cette adresse : http://localhost:9500/api");
});


app.get('/', function(req, res) {
  try {
    //>> Tu peux améliorer ce code en gardant la valeur timestamp en mémoire.
    let ts = fs.readFileSync('./TimeBot/json/time.json', { encoding: 'utf-8' });
    res.render('index', { timestamp: JSON.parse(ts).timestamp });
    //<<
  } catch (e) { 
    res.send("error");
  }
});

new Date(1500033600000).toLocaleDateString().slice(-13, -5);



// Port sur lequel est lu le serveur, soit 9500
app.listen(port, function(err){
    if (err) throw err;
    console.log("nickel !");
});

Je dois forcément installer momentjs ?

Awoken

Non, c’est une possibilité si tu n’arrives pas à utiliser date.

— je veux bien l’utiliser, ça à l’air pas mal et c’est connu, j’en avait déjà entendu parler mais faudrait que j’arrive à l’utiliser.

Si tu prend le temps de regarder le lien que j’ai mis dans ma première réponse tu arriverais à ça : http://jsfiddle.net/tzmv7deh/

A-312

J’ai déjà vu ce lien la première fois que tu me l’as envoyé, mais.. il recommence le compte à rebours à chaque refresh

+0 -0
1
timestamp = (+new Date() + 60 * 60); //remplace le code ici

Si tu mets un timestamp fixe, il ne changera pas à chaque fois… Tu peux utiliser la solution n°1 que j’ai proposé sur ton autre sujet.

1
2
3
4
5
6
$.getJSON( "/api", function( data ) {
    var fiveMinutes = 60 * 5,
        display = document.querySelector('#time'),
        timestamp = data.timestamp;
    startTimer(new Date(timestamp) - new Date(), display);
});
1
timestamp = (+new Date() + 60 * 60); //remplace le code ici

Si tu mets un timestamp fixe, il ne changera pas à chaque fois… Tu peux utiliser la solution n°1 que j’ai proposé sur ton autre sujet.

1
2
3
4
5
6
$.getJSON( "/api", function( data ) {
    var fiveMinutes = 60 * 5,
        display = document.querySelector('#time'),
        timestamp = data.timestamp;
    startTimer(new Date(timestamp) - new Date(), display);
});
A-312

J’ai cherché sur internet.. et je ne vois pas comment installer ajax. C’est bien à installer non ? (désolé, j’ai jamais touché à ajax)

Je pensais que tu savais utiliser jQuery. Pour pouvoir utiliser $.getJSON, tu dois inclure jQuery à ta page. Tu pourras télécharger le fichier sur le site officiel. Ensuite tu ajoutes le code suivant à la fin de ton body.

1
<script type="text/javascript" src="jquery-3.2.1.min.js"></script>

Veille à créer un dossier "public" où tu mettra le fichier jquery et à autoriser le chargement des fichiers statiques comme expliqués ici.

1
app.use(express.static('public'));

Et tu prendras soin d’attendre la fin de chargement de la page avant de charger ton script comme ceci :

1
2
3
4
5
6
7
8
$( window ).load(function() {
  $.getJSON( "/api", function( data ) {
    var fiveMinutes = 60 * 5,
        display = document.querySelector('#time'),
        timestamp = data.timestamp;
    startTimer(new Date(timestamp) - new Date(), display);
  });
});

Je pensais que tu savais utiliser jQuery. Pour pouvoir utiliser $.getJSON, tu dois inclure jQuery à ta page. Tu pourras télécharger le fichier sur le site officiel. Ensuite tu ajoutes le code suivant à la fin de ton body.

1
<script type="text/javascript" src="jquery-3.2.1.min.js"></script>

Veille à créer un dossier "public" où tu mettra le fichier jquery et à autoriser le chargement des fichiers statiques comme expliqués ici.

1
app.use(express.static('public'));

Et tu prendras soin d’attendre la fin de chargement de la page avant de charger ton script comme ceci :

1
2
3
4
5
6
7
8
$( window ).load(function() {
  $.getJSON( "/api", function( data ) {
    var fiveMinutes = 60 * 5,
        display = document.querySelector('#time'),
        timestamp = data.timestamp;
    startTimer(new Date(timestamp) - new Date(), display);
  });
});
A-312

j’obtiens cette erreur :

1
Cannot read property 'use' of undefined

Le fichier arrive pas à lire la propriété ’use’ (non défini) je crois.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
const express = require('express'); // Inclusion de ExpressJS
const fs = require('fs'); // Inclusion de fs (fs.readfile)
const path = require("path");
app.use(express.static('public'));
var app = express(); // Utilisé pour app.get/put/delete/post
var port = 9500; // On définit la valeur du port sur 9500
app.set('view engine', 'ejs');

// URL
app.get('/api', function (req, res) {

// On lit le ficher time.json dans TimeBot/json/time.json. Puis, on envoie "timestamp" dans le res.send.

let ts = fs.readFileSync('./TimeBot/json/time.json', { encoding: 'utf-8' });
res.send(JSON.parse(ts));


});

app.get('/', function (req, res){
      res.send("va pas ici, y'a rien. Va plutôt à cette adresse : http://localhost:9500/api");
});


app.get('/', function(req, res) {
  try {

    let ts = fs.readFileSync('./TimeBot/json/time.json', { encoding: 'utf-8' });
    res.render('index', { timestamp: JSON.parse(ts).timestamp });

  } catch (e) { 
    res.send("error");
  }
});




// Port sur lequel est lu le serveur, soit 9500
app.listen(port, function(err){
    if (err) throw err;
    console.log("nickel !");
});


$( window ).load(function() {
  $.getJSON( "/api", function( data ) {
    var fiveMinutes = 60 * 5,
        display = document.querySelector('#time'),
        timestamp = data.timestamp;
    startTimer(new Date(timestamp) - new Date(), display);
  });
});

En dessous, y’a momentjs : https://momentjs.com/downloads/moment-with-locales.js

Arborescence : https://image.noelshack.com/fichiers/2017/28/5/1500028612-capture.png

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte