Bonjour,
Voilà j'aimerais convertir une date en secondes mais je ne suis pas sûr de la méthode à adapter.
Exemple: 2018 08 28 17 23 10
Bonjour,
Voilà j'aimerais convertir une date en secondes mais je ne suis pas sûr de la méthode à adapter.
Exemple: 2018 08 28 17 23 10
J'ai essayé je n'ai pas compris les fonctions si quelqu'un pourrait me le faire avec générosité cela serait bien plaisant
Bonjour,
"2018 08 28 17 23 10" n'est pas une date.
Ni dans cette vie, ni dans l'au-delà.
Montre-nous le VRAI format de la date à convertir.
(un vrai exemple)
Dans mon script je reçois 3 dates que je modifie à souhait par conséquent le format de la date m'importe peu mais peut-être que pour vous c'est important
donc voici les dates correspondantes
- 28/08/2018 20:12:30 la date départ
- 28/08/2018 20:15:30 la date actuelle
- 28/08/2018 20:30:35 la date arrivée
Je veux pouvoir calculer la différence des deux dates départ et arrivée et le temps entre les deux dates soit date actuelle
bonsoir
c'est un sujet déjà abordé il me semble, avec une réponse qui devrait satisfaire ton besoin :
https://www.developpez.net/forums/d8...entre-2-dates/
OK.
Voilà qui est plus précis !
1- il faut convertir tes dates dans le format standard : yyyy-mm-dd hh:mm:ss, avec date_create_from_format
2- pour obtenir la différence, utiliser date_diff
Ça, par contre, ce n'est pas clair.
Calculer la différence entre 2 dates et convertir une date en secondes, ce n'est pas franchement la même chose
Pour étendre la réponse de rebelor :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $date1 = DateTime::createFromFormat('d/m/Y H:i:s', '28/08/2018 20:12:30'); $date2 = DateTime::createFromFormat('d/m/Y H:i:s', '28/08/2018 20:30:35'); $intervalle = date_diff($date1, $date2); echo $intervalle->format('écart : %h heures, %i minutes et %s secondes');
Vous êtes généreux mais on s'écarte du sujet.
je vous donne mon script et à vous de le compléter pour faire les Opérations.
Avec votre méthode je suis perdu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256 include("connexionbdd.php"); echo "<head>"; //include("affichagecompteur.php"); echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />"; echo "</head><body>"; echo "Login : ".$login."<br>"; echo "Vos champs : <br>"; include("main_constructeurs.php"); $temps=$data['temps']; //$sql01 = "SELECT * FROM actions WHERE login='$login' AND action='ON'"; $sql01 = "SELECT * FROM actions WHERE login='$login' AND action='ON'"; $req01 = mysql_query($sql01) or die('Erreur SQL !<br>'.$sql01.'<br>'.mysql_error()); while($data = mysql_fetch_assoc($req01)) { $id=$data['id']; //$loginsession=$data['logincompte']; $idchamp=$data['idchamp']; $datedepart=$data['datedepart']; $datearrivee=$data['datearrivee']; $action=$data['action']; $sql05 = "SELECT * FROM niveaux WHERE niveau='$niveau'"; $req05 = mysql_query($sql05) or die('Erreur SQL !<br>'.$sql05.'<br>'.mysql_error()); while($data = mysql_fetch_assoc($req05)) { $temps=$data['temps']; $niveau=$data['niveau']; $niveau02=$_GET['niveau']; $tempsensecs=$data['tempsensecs']; $compteur=explode(" ",$temps); $newcompteur=$compteur[2]."".$compteur[1]."".$compteur[0]."".$compteur[3]."".$compteur[4]."".$compteur[5].""; // //$dateactuelleafff=$compteur=explode(" ",$temps); // } //Date actuelle de comparaison $dateactuelle=date("YmdHis"); // $dateactuelle=explode(" ",$dateactuelle); /* $dateactuelle[0]//0000 Années $dateactuelle[1] 00 Mois $dateactuelle[2] 00 Jours $dateactuelle[3] 00 Heures $dateactuelle[4] 00 Minutes $dateactuelle[5] 00 Secondes */ /* $datesecs=intval($dateacctuelle[5],60); $datemins=intval($dateactuelle[4],60); $dateheures=intval($dateactuelle[3],24); $datejours=intval($dateactuelle[2],30);//ou 31 $datemois=intval($dateactuelle[1],12); $dateannee=intval($dateactuelle[0]); echo "".$datesecs; echo "<br>".$datemins; echo "<br>".$dateheures; echo "<br>".$datejours;//ou 31 echo "<br>".$datemois; echo "<br>".$dateannee; */ //$ddq = date_create(); //$ddq = date_timestamp_set($ddq,1234567890); //echo date_format($ddq, 'B => (U) => T Y-M-d H:i:s'); /*date_default_timezone_set("UTC"); $ddp = date_default_timezone_get(); echo $ddp; $ddq = new DateTime(); $ddq ->setTimestamp(1234567890); echo $ddq -> format('B => (U) => T Y-M-d H:i:s'); */ $datearriveecomp=str_replace(' ','',$datearrivee); $datedepartcomp=str_replace(' ','',$datedepart); //Comparaison de dates // $datedepart=$data['datedepart']; // $datedepart=explode(" ",$datedepart); // $datedepart=$datedepart[1]."".$datedepart[2]."".$datedepart[3]."".$datedepart[4]."".$datedepart[5]."".$datedepart[6]; // $datearrivee=$data['datearrivee']; // $datearrivee=explode(" ",$datearrivee); // $datearrivee=$datearrivee[0]."".$datearrivee[1]."".$datearrivee[2]."".$datearrivee[3]."".$datearrivee[4]."".$datearrivee[5]; /* $datedepartcomp=intval($datedepartcomp); $datearriveecomp=intval($datearriveecomp); $dateactuelle=intval($dateactuelle); echo "<br>"; echo "".$datedepartcomp.""; echo "<br>"; echo "".$datearriveecomp.""; echo "<br>"; echo "".$dateactuelle.""; */ } if($dateactuelle>$datearriveecomp) { $sql02 = "UPDATE actions SET action='OFF' WHERE idchamp='$idchamp' AND login='$login'"; $req02 = mysql_query($sql02) or die('Erreur SQL !<br>'.$sql02.'<br>'.mysql_error()); $sql04 = "UPDATE champs SET niveauchamp=niveauchamp+1 WHERE login='$login' AND idchamp='$idchamp'"; $req04 = mysql_query($sql04) or die('Erreur SQL !<br>'.$sql04.'<br>'.mysql_error()); }else if($dateactuelle<$datearriveecomp) { /* $sql09 = "SELECT * FROM niveaux WHERE niveau='$niveau'"; $req09 = mysql_query($sql09) or die('Erreur SQL !<br>'.$sql09.'<br>'.mysql_error()); while($data = mysql_fetch_assoc($req09)) { $tempscible=$data['temps']; } */ /* $sql06 = "SELECT * FROM actions WHERE login='$login' AND action='ON'"; $req06 = mysql_query($sql06) or die('Erreur SQL !<br>'.$sql06.'<br>'.mysql_error()); while($data = mysql_fetch_assoc($req06)) { $datearrivee=$data['datearrivee']; $datedepart=$data['datedepart']; //$action=$data['action']; *///$temps=$data['temps']; $datedepart=explode(" ",$datedepart); $datedepart=$datedepart[2]."/".$datedepart[1]."/".$datedepart[0]." ".$datedepart[3].":".$datedepart[4].":".$datedepart[5]; $datearrivee=explode(" ",$datearrivee); $datearrivee=$datearrivee[2]."/".$datearrivee[1]."/".$datearrivee[0]." ".$datearrivee[3].":".$datearrivee[4].":".$datearrivee[5]; $tempsvalue=$data['tempsvalue']; $niveau=$_GET['niveau']; //$niveau02=$data['niveau']; //$niveau+=1; //$niveau02+=1; //echo $niveau02."<br>"; // // //echo $niveau."<br>"; //$compteur=explode(" ",$temps); //$newcompteur=$compteur[2]."".$compteur[1]."".$compteur[0]."".$compteur[3]."".$compteur[4]."".$compteur[5].""; // /////MARQUE //echo $datedepart."<br>"; //echo $datearrivee."<br>"; //echo $dateactuelle."<br>"; $niveauavant=$niveau; $niveau+=1; //CE BLOC LA DOIT SAFFICHER QUAND ACTION = ON // if($action=="ON"){ $niveauavant=htmlentities($niveauavant); $niveau=htmlentities($niveau); $temps==htmlentities($temps); $datedepart=htmlentities($datedepart); $datearrivee=htmlentities($datearrivee); echo "<table border=\"1\" width=\"200\"> <tr><td colspan=\"1\">Niv.".$niveauavant." => ".$niveau."</td><td> Durée: ".$temps."</td></tr> <tr><td>".$datedepart."</td><td>".$datearrivee."</td></tr>"; /*$sql10 = "SELECT * FROM niveaux WHERE niveau='$niveau'"; $req10 = mysql_query($sql10) or die('Erreur SQL !<br>'.$sql10.'<br>'.mysql_error()); while($data = mysql_fetch_assoc($req10)) { $tempsensecs=$data['tempsensecs']; $niveau=$data['niveau']; } */ //$sql12 = "INSERT INTO actions(id, login, datedepart, datearrivee, action) VALUES('','$login','$datedepart','$datearrivee','ON')"; //$req12 = mysql_query($sql12) or die('Erreur SQL !<br>'.$sql12.'<br>'.mysql_error()); } if($dateactuelle>$datearriveecomp) { }else if($dateactuelle<$datearriveecomp && $dateactuelle>=$datedepartcomp) { $x=100*($dateactuelle-$datedepartcomp)/($datearriveecomp-$datedepartcomp); $depart=round($x); include("progressbar2.php"); echo "<tr><td colspan=\"2\"><progress id=\"MaBarreProgression\" value=\"".$depart."\" max=\"100\"></progress><br> <span class=\"progress-value\">Téléchargement 0%</span> </td></tr></table>"; } //include("main_constructeurs.php"); echo "</body></html>"; ?>
Ligne 114 à 119 les affichages
Ligne 240 à 245 l'affichage d'une barre de progression en temps "réel".
Ligne 240 je calcule le % du temps accompli:
Avec votre méthode je ne peux pas le calculer car il y a division de 2 dates d'où l'intérêt que je porte à convertir en secondes ou une unité commune.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $x=100*($dateactuelle-$datedepartcomp)/($datearriveecomp-$datedepartcomp); $depart=round($x);
Cet $x est le pourcentage.
J'aimerais faire brutalement cette opération:
évidemment je fais des erreurs c'est pour cela que j'ai posté pour avoir une réponse semblable mais juste au moins.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 $datedepart=date("Y m d H i s"); $datedepart=explode(" ",$datedepart); $datedepart=$datedepart[2]."/".$datedepart[1]."/".$datedepart[0]." ".$datedepart[3].":".$datedepart[4].":".$datedepart[5]; éléments des secondes: $datedepart[5] éléments des minutes: $datedepart[4]*60 éléments des heures: $datedepart[3]*60*60 éléments des jours: $datedepart[0]*60*60*24 éléments des mois: $datedepart[1]*12*60*60*24 éléments des années: $datedepart[2]*60*60*24*12*1
Je pense que tu as pas bien compris le principe du forum.je vous donne mon script et à vous de le compléter pour faire les Opérations.
Si tu ne veux pas travailler pas de problème , mais ca va pas être gratuit ...
Célira te donne un code qui répond à ta question , à toi de l'adapter ensuite à ta situation ...
OK.
Celira t'a donné l'essentiel.
En cherchant un peu... on trouve DateTime::getTimestamp :
On peut alors manipuler les timestamp "simplement" avec des fonctions arithmétiques :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <?php $date_debut = '28/08/2018 20:12:30'; $date_fin = '28/08/2018 20:30:35'; // on crée les objet DateTime, manipulables $date1 = DateTime::createFromFormat('d/m/Y H:i:s', $date_debut); $date2 = DateTime::createFromFormat('d/m/Y H:i:s', $date_fin); // on récupère sous forme de timestamp (nombre de secondes depuis le 1er janvier 1970) echo $timestamp1 = $date1->getTimestamp().'<br />'; echo $timestamp2 = $date2->getTimestamp().'<br />';
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <?php // On n'a plus qu'à effectuer les calculs "simplement" : echo 'Intervalle : '.($timestamp2 - $timestamp1).'<br />';
Avec votre méthode, on ne peut pas faire la division de 2 dates.Je pense que tu as pas bien compris le principe du forum.
Si tu ne veux pas travailler pas de problème , mais ca va pas être gratuit ...
Célira te donne un code qui répond à ta question , à toi de l'adapter ensuite à ta situation ...
Je pense qu'en secondes ou timestamp(que je ne comprends pas) sont les seuls unité utilisable.
Je m'excuse si je n'ai pas été assez clair.
Aidez moi à faire le calcul brutalement comme ceci:
Mais juste, je pense que je fais une erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 $datedepart=date("Y m d H i s"); $datedepart=explode(" ",$datedepart); $datedepart=$datedepart[2]."/".$datedepart[1]."/".$datedepart[0]." ".$datedepart[3].":".$datedepart[4].":".$datedepart[5]; éléments des secondes: $datedepart[5] éléments des minutes: $datedepart[4]*60 éléments des heures: $datedepart[3]*60*60 éléments des jours: $datedepart[0]*60*60*24 éléments des mois: $datedepart[1]*12*60*60*24 éléments des années: $datedepart[2]*60*60*24*12
Merci jreaux62 et Celira pour le temps passer à m'aider je vais voir en timestamp les méthodes.
Je t'ai donné la méthode dans mon précédent post.
- timestamp : nombre de secondes depuis le 1er janvier 1970 00:00:00 GMT
Ce qui fournit un référentiel universel aux dates.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <?php $date_debut = '28/08/2018 20:12:30'; $date_fin = '28/08/2018 20:30:35'; $date_actuelle = '28/08/2018 20:15:30'; // on crée les objet DateTime, manipulables $date1 = DateTime::createFromFormat('d/m/Y H:i:s', $date_debut); $date2 = DateTime::createFromFormat('d/m/Y H:i:s', $date_fin); $date3 = DateTime::createFromFormat('d/m/Y H:i:s', $date_actuelle); $timestamp1 = $date1->getTimestamp(); $timestamp2 = $date2->getTimestamp(); $timestamp3 = $date3->getTimestamp();
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <?php $interval_fin_debut = $timestamp2 - $timestamp1; $interval_fin_actuelle = $timestamp2 - $timestamp3; $rest_pourcentage = number_format (100 * $interval_fin_actuelle / $interval_fin_debut, 2 ); echo 'fin - début = '.$interval_fin_debut.' secondes<br />'; echo 'fin - actuelle = '.$interval_fin_actuelle.' secondes<br />'; echo 'Reste pourcentage = '. $rest_pourcentage .' %<br />';
jreaux62 fantastique je teste dès que je peux mais c'est exactement ce qu'il me fallait.
Merci pour cette réponse.
Undefined class name 'datetime' in /mnt/114/sdb/f/2/skyplayer/main.php on line 140Je suis sûr que ce n'est qu'une directory à ajouter mais laquelle ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part $date1 = DateTime::createFromFormat('d/m/Y H:i:s', $date_debut);
Tout faux.
Essaie avec new :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $date1 = new DateTime::......
- La classe DateTime (PHP 5 >= 5.2.0, PHP 7)
Il va falloir que tu apprennes à faire des recherches tout seul, et à lire la DOC.
Pour le moment, je ne trouve pas la solution même avec "new" T_PAAMAYIM_NEKUDOTAYIM
Alors je dois me pencher vers la formulation je pense de l'ordre des éléments de la date, je cherche encore.
Si vous trouvez mieux vous me le dites ou alors la version de mon php est trop obsolète.
As-tu testé le Style procédural ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <?php $date = date_create_from_format( ........);
La plus grande qualité pour progresser est la CURIOSITE.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager