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


soustraires des heures - mloolm - 01-08-2010

salut
voila j ai 2 heures de style
$date1="14:00:00";
$date2=" 3:00:00";

je voudrai faire
$date1-$date2
mais ca ne marche pas .j ai cherché 1 peu sur le net mais je n ai pas trouver la solution.

si quelqu un pouvait m aider je l en remercie d avance


RE: soustraires des heures - alfanor - 01-08-2010

Vas voir ça :

http://fr.php.net/manual/fr/book.datetime.php

Il te suffit de créer deux objets DateTime et d'utiliser la méthode "diff".


RE: soustraires des heures - Argorate - 02-08-2010

sinon tu split(':') et tu fais à la main, c pas bien compliqué :p


RE: soustraires des heures - zeppelin - 02-08-2010

Ouep soit comme le dit argo, ou alors tu converti en timestamp, ce qui te permet de reconvertir en date à nouveau etc, bref pas mal de liberté : http://fr.php.net/manual/fr/function.mktime.php

Sinon pense au array, des variables du même nom avec des chiffres c'est pas beau! ;-)


RE: soustraires des heures - Argorate - 02-08-2010

J'avoue que perso je travail qu'avec des timestamp tu te prends moins la tete ^^
Enfin j'imagine que ça dépent de se que tu veux en faire mais bon...


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

(02-08-2010, 01:26 PM)Argorate a écrit : J'avoue que perso je travail qu'avec des timestamp tu te prends moins la tete ^^

Tu te prends encore moins la tête avec des objets. Smile


# Fais exploser la bombe dans 20 minutes :
bomb.explode_at = Time.now + 20.minutes
bomb.explode_at = 20.minutes.from_now # Equivalent et encore plus simple.

Un exemple réel issu de Spherium : la méthode qui met à jour les ressources du joueur. La colonne resources_updated_at contient l'instant de la dernière mise à jour et hourly_energy_production est une méthode qui compte la production horaire d'énergie :


def update_resources!
User.transaction do
now = Time.now.utc

duration_since_previous_update = now - resources_updated_at
energy_produced_per_second = energy_produced_per_hour / 3600

self.energy_count += energy_produced_per_second * duration_since_previous_update
self.resources_updated_at = now
save!
end
end

C'est autrement plus lisible et pratique que de travailler avec des nombres, non (c'est rhétorique, hein…) ? Smile

Pour conclure, je te conseille de prendre un moment pour développer ou trouver des classes qui font ça, ton code sera bien plus lisible et maintenable.


Sephi-Chan


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

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...


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

(03-08-2010, 12:30 AM)atra27 a écrit : Comme le timestamp est un entier, toutes les opérations/soustractions/division/multiplications se font comme avec toute autre variable en php.

je te rejoins sur cette idée: un timestamp est un entier donc tu en fait ce que tu veux. OK, ce n'est pas tres lisible mais on est tous assez malin pour comprendre que 3600 secondes cela fait une heure.

la preuve, l'auteur de ce topic est emmerdé parce que il dois jongler avec des variables formatées ( $date1="14:00:00"; ) et si il travaillait avec des timestamp il n'aurais pas ce genre de preocupations...

apres effectivement tu peut te faire des classe OO ou des function procedurales, mais avec à base de timestamp. genre convertir un timestamp en date, en heure, mais un timestamp reste un timestamp, l'unité de base...

ce n'est qu'un avis d'un amateur...


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

J'ai une question (con ??), ta date / heure formatée, elle vient d'une base de donnée ?? => Doc Date de MySQL

Citation :TIMEDIFF(expr,expr2)

TIMEDIFF() retourne la durée entre l'heure de début expr et l'heure de fin expr2. expr et expr2 sont des expressions de type TIME ou DATETIME, et doivent être de même type.

Utilisation:

SELECT TIMEDIFF('14:00:00','3:00:00') == 11:00:00

SELECT TIMEDIFF('3:00:00','14:00:00') == -11:00:00

Puis:

SELECT HOUR(TIMEDIFF('3:00:00','14:00:00')) == 11

++


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

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 ...
Ici il travaille avec des heures, indépendament de la date. Le timestamp inclut une date, ça peut être source d'erreurs. Il doit bien y avoir des fonctions ou des classes pour travailler avec des heures dans la SPL