JeuWeb - Crée ton jeu par navigateur
soustraires des heures - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : soustraires des heures (/showthread.php?tid=5040)

Pages : 1 2 3 4


RE: soustraires des heures - Sephi-Chan - 03-08-2010

(03-08-2010, 12:30 AM)atra27 a écrit : Une question Sephi Chan?

C'est quoi l'utilité de ton post? Big Grin

sans vouloir être méchant il demande pour du php ($variable et la "renommée" du php font que je peut l'affirmer sans me tromper...) donc ta réponse est techniquement correcte et satisfaisante ... sauf qu'elle est totalement inutile....

Et c'est valable aussi pour ce cher oxman et son scala... c'est inutile dans ce cas si donc pas la peine de poster ton code pour "aider"

Bref ma remarque est passée...

Bon alors pour ta question sinon alors je te conseille vraiment de travailler avec les timestamp.

Un exemple pour avoir l'heure courante en timestamp:
Code PHP :
<?php 
$timestamp
=time();
Une date vers un timestamp:
Code PHP :
<?php 
$timestamp
= mktime(heures, minutes, secondes, mois, jour, année);
Et le plus utile: un timestamp vers une date:
Code PHP :
<?php 
$date
=date('Format', $timestamp);

Comme le timestamp est un entier, toutes les opérations/soustractions/division/multiplications se font comme avec toute autre variable en php.

Il y a pleins d'autres sujets sur le forum....

Sinon a par ce conseil sur la méthode... je te conseille un explode si tu est sur que ton format de date ne peut jamais changer...

Déjà, l'auteur du post n'a pas utilisé les marqueurs de titre qui indique que sa demande concerne PHP.

Ensuite, je ne fais que promouvoir l'utilisation des objets. Ici, je présente mes exemples avec Ruby, mais tous les langages objets peuvent avoir des équivalents : ce genre de chose est très transposable d'un langage à l'autre (pour peu qu'il soit orienté objet, bien entendu).

Je préfère présenter une solution efficace et lisible (quitte à faire une démonstration en Ruby) plutôt que de suggérer d'utiliser des explodes : crois-tu l'aider plus en proposant une solution si sale ?

Enfin, si tu ne souhaite pas utiliser l'objet, les fonctions de dates et heures de MySQL (tout autre SGBDR en a également) sont très bien. Par contre, il faut faire attentions aux heures et aux timezone, ici, aucun framework ne le fera pour toi.

Voilà un exemple pour créer une bombe qui explosera dans 20 minutes :


INSERT INTO bombs (explode_at)
VALUES (DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL 20 MINUTE));


Sephi-Chan


RE: soustraires des heures - atra27 - 03-08-2010

(03-08-2010, 09:35 AM)niahoo a écrit : Ben sje suis plutôt d'accord avec vous, mais maintenant essayez de gérer des dates anciennes avec un timestamp, du genre le 15 Juin 1856 ...

Ton timestamp deviendra négatif.... il faudrai tester si ça retourne une valeure correcte avec date mais il me semble bien que oui...
Mais sinon pour les calculs c'est pareil!
Code PHP :
<?php 
date
("dateformat",$date1-$date2);

De tout façon... a moins que tu sois baléze je te déconseille de faire a la main.... car il faut comprendre la date... si la soustraction fait changer de jour ou une connerie comme ça tu va galérer a faire sa!


RE: soustraires des heures - mloolm - 03-08-2010

bonjour
merci pour toute ces réponses ,j ai essayer de faire ce qui me semble le plus facile,n étant pas très fort en php je viens vous demandé si je commence bien
mon code
et non ce n est pas pour une base de données,j essaye de faire 1 outil pou 1 jeu,1 synchroniseur d attaques
Code PHP :
<?php
$date1
= "15:00:00";
$date2= "05:00:00";
$date = explode(':', $date1);
$heure = $date[0];
$minute = $date[0];
$seconde = $date[0];
$total_seconde = ($heure*60*60)+($minute*60)+$seconde;



RE: soustraires des heures - niahoo - 03-08-2010

un mktime (1,2,3,4,5,1875) retourne false, pas un truc négatif. ensuite si tu commences à bosser en négatif en utilisant 1970 comme base c'est la galère pour rien je pense..


RE: soustraires des heures - srm - 03-08-2010

Si tu dois bosser avec des dates plus vieilles que 1900 moi je leurs rajouterais 2000 ans et hop tu es peinard Wink


RE: soustraires des heures - php_addict - 03-08-2010

(03-08-2010, 11:30 AM)mloolm a écrit :
Code PHP :
<?php
$date1
= "15:00:00";
$date2= "05:00:00";
$date = explode(':', $date1);
$heure = $date[0];
$minute = $date[0];
$seconde = $date[0];
$total_seconde = ($heure*60*60)+($minute*60)+$seconde;

t'as vraiement pas envie d'essyer avec les timestamp, tu as 7 lignes de codes pour faire ca !


RE: soustraires des heures - niahoo - 03-08-2010

Code PHP :
<?php
$date1
= "15:00:00";
$date2= "05:00:00";
list(
$heure, $minute, $seconde) = explode(':', $date1);
$total_seconde = ($heure*60*60)+($minute*60)+$seconde;

ça fait moins de lignes ^^

( à tester, j'ai plus php sur mon PC la )


RE: soustraires des heures - atra27 - 04-08-2010

Bon écoute si tu veux pas te prendre la tête.. arrête de t'entêter...

Dans ton exemple la je ferait:
Code PHP :
<?php 
$date1
= "15:00:00";
$date2= "05:00:00";
//thx niahoo ;)
list($heure1, $minute1, $seconde1) = explode(':', $date1);
list(
$heure2, $minute2, $seconde2) = explode(':', $date2);
$timestamp1 = mktime($heure1, $minute1, $seconde1, 0, 0, 0);
$timestamp2 = mktime($heure2, $minute2, $seconde2, 0, 0, 0);
$resultat=date("format",$timestamp1-$timestamp2);

Voila... sinon tu va t'enbeter a mort...
Et pour les autres dates... fait comme oxman... un petit +2000 sur les années réglera le probléme... (2000 années pour info sa fait "que" 2645520000 secondes il me semble :p)


RE: soustraires des heures - mloolm - 04-08-2010

merci atra27 Cool:harpe:
par contre quand je fais
echo $resultat ;

ca me donne
foThu, 01 Jan 1970 01:00:00 +010001am31
et pas 10:00:00

comment ca ce fais?


RE: soustraires des heures - niahoo - 04-08-2010

pasque t'as mis
Code PHP :
<?php 
$resultat
=date("format",$timestamp1-$timestamp2);
tel quel alors qu'il faut choisir la chaine à la place de "format"

Je te laisse lire la doc de la fonction date