Διαφορά χρόνου με χιλιοστά

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
apoelista88
Δημοσιεύσεις: 19
Εγγραφή: 11 Σεπ 2005 03:11

Διαφορά χρόνου με χιλιοστά

Δημοσίευση από apoelista88 » 12 Οκτ 2008 22:16

Γεια σας παιδια. Αυτο που προσπαθώ να κάνω είναι ένα κώδικα στον οποίο να εισάγεις 2 χρόνους και να σου δίνει την διαφορά σε format: ΩΩ.ΛΛ.ΔΔ.ΧΧΧ
Εχω προχωρήσει αρκετά αλλα κάτι στην κωδικοποίηση μου δεν δουλεύει σωστά και αν μπορεί καποιος να βοηθήσει καλοδεχούμενος.

Κώδικας: Επιλογή όλων

<?php

$starttime = '1.22.35.843';
$finishtime = '1.24.38.343';
$st = explode&#40;".", $starttime&#41;;
$fi = explode&#40;".", $finishtime&#41;;

$starttime = $st&#91;3&#93; + &#40;$st&#91;2&#93;*1000&#41; + &#40;$st&#91;1&#93;*60000&#41; + &#40;$st&#91;0&#93;*3600000&#41;;
$finishtime = $fi&#91;3&#93; + &#40;$fi&#91;2&#93;*1000&#41; + &#40;$fi&#91;1&#93;*60000&#41; + &#40;$fi&#91;0&#93;*3600000&#41;;

$total = $finishtime - $starttime;

$to&#91;3&#93; = floor&#40;$total / 1000&#41;;
$to&#91;2&#93; = floor&#40;$total / 1000/ 60&#41;;
$to&#91;1&#93; = floor&#40;$total / 1000/ 60 / 60&#41;;
$to&#91;0&#93; = floor&#40;$total / 1000/ 60 / 60 / 24&#41;;





echo "Total&#58; " . $total . "<br/>";

$minutes= floor&#40;$total / 1000 / 60&#41;;
$remainder = $total % 60000;
$seconds = floor&#40;$remainder / 60&#41;;
$remainder = $total % 60;
$milliseconds = floor&#40;$remainder&#41;;


echo "Interval&#58; " . $minutes . "." . $seconds . "." . $milliseconds;

?> 
Ο κώδικας μέχρι το TOTAL αν δέν κανω λάθος είναι σωστός αλλα κάπου έχω μπερδευτεί και δυσκολεύομαι να βρώ λύση έτσι ώστε να τον μετατρέπει σωστά σε λεπτα.δευτερόλεπτα και χιλιοστά.

Άβαταρ μέλους
DGeorge
Honorary Member
Δημοσιεύσεις: 3752
Εγγραφή: 13 Σεπ 2007 12:59
Τοποθεσία: Καλλιθέα Γενικώς

Διαφορά χρόνου με χιλιοστά

Δημοσίευση από DGeorge » 13 Οκτ 2008 10:56

Φίλε @apoelista88 καλή σου μέρα και καλή βδομάδα :D :D ,

Όταν το 1986 έκανα Πτυχιακή στη FORTRAN, στο ΦΥΣΙΚΟ της Αθήνας, μου είχαν πει τότε οι ΕΠΙΒΛΕΠΟΝΤΕΣ (καλή τους ώρα): "Αν έμαθες καλά τη FORTRAN, τις έμαθες ΟΛΕΣ!!!"
Τότε δεν κατάλαβα τι εννοούσαν, μέχρι που 'πρωτοέπαιξα' με τον κώδικα της Clipper και της dBase στην αρχή και μετά της Access: Η 'Βασική Αρχή' είναι ακριβώς ίδια σε όλες τις γλώσσες προγραμματισμού!! Κάτι οι εντολές, κάτι λίγο η σύνταξη... και να μια ΝΕΑ Γλώσσα Προγραμματισμού!
Βέβαια στην ευελιξία τους, και στη δυαδική τους κατάσταση/δυνατότητες κλπ μπορεί να διαφέρουν μίλια η μια από την άλλη. Ωστόσο, οι κώδικες (απ'όσο έχω δει) δεν διαφέρουν και δραματικά!
Γι'αυτό μέχρι να σου απαντήσουν οι πιο ειδικοί, θάθελα να σου προτείνω κάποιες πιο γενικές ενέργειες:
Ξεκίνα τον κώδικά σου με κάτι προφανές: Να σου εμφανίσει ως αποτέλεσμα ένα σταθερό δεδομένο, που θα του δώσεις. Κατόπιν βάλε τον να κάνει βήμα-βήμα τις πράξεις που ζητάς. Μετά δώσε του τα δεδομένα χρόνου που θέλεις. Σε κάθε βήμα έλεγχε το αποτέλεσμά σου! Έτσι, θα φτάσεις ΣΙΓΟΥΡΑ σε επιτυχία εντοπίζοντας Μόνος το πρόβλημα, που μπορεί να είναι από Τελείως λάθος εντολή, μέχρι -το πιο γελοίο- ένα κόμμα παραπάνω στη σύνταξη κάποιας εντολής.
Ταυτόχρονα 1) Θα έχεις την ικανοποίηση ότι τα κατάφερες μόνος!! 2) Δεν θα ξανακάνεις -ίσως ποτέ- το ίδιο λάθος!! 3) Πάνω στην όλη διαδικασία Σίγουρα θα μάθεις ΚΑΙ κάτι νέο, που δεν ήξερες!
Πειραματίσου κιόλας για περισσότερα :D :D !
Σε καμμιά Σχολή δεν μπορούν να σ'τα μάθουν όλα! Κατευθύνσεις σου δίνουν για να δουλέψεις μόνος το αντικείμενο που θέλεις να μάθεις.

Ελπίζω να σε βοήθησα, έστω και λίγο
:D :D
PC-Ponemenos
Εικόνα

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Διαφορά χρόνου με χιλιοστά

Δημοσίευση από fafos » 13 Οκτ 2008 13:26

Gia dokimase auto:

Κώδικας: Επιλογή όλων

<?php

$starttime = '1.22.35.843';
$finishtime = '1.24.38.343';  
$st = explode&#40;".", $starttime&#41;;
$fi = explode&#40;".", $finishtime&#41;;

$starttime = $st&#91;3&#93; + &#40;$st&#91;2&#93;*1000&#41; + &#40;$st&#91;1&#93;*60000&#41; + &#40;$st&#91;0&#93;*3600000&#41;;
$finishtime = $fi&#91;3&#93; + &#40;$fi&#91;2&#93;*1000&#41; + &#40;$fi&#91;1&#93;*60000&#41; + &#40;$fi&#91;0&#93;*3600000&#41;;

$total = $finishtime - $starttime;

$to&#91;3&#93; = floor&#40;$total / 1000&#41;;






echo "Total&#58; " . $total . "<br/>";



$hours = &#40;&#40;$to&#91;3&#93; / 60 / 60&#41; % 60&#41;; 
    $mtu = str_pad&#40;$hours, 1, "0", STR_PAD_LEFT&#41;. '.';
$minutes = &#40;&#40;$to&#91;3&#93; / 60&#41; % 60&#41;; 
    $mtu .= str_pad&#40;$minutes, 1, "0", STR_PAD_LEFT&#41;. '.';
    $seconds = $to&#91;3&#93; % 60; 
    $mtu .= str_pad&#40;$seconds, 2, "0", STR_PAD_LEFT&#41;. '.';
if&#40;strlen&#40;$total&#41; < 3&#41; &#123;
    $milsec =  $total;
&#125; else &#123;
    $milsec =  substr&#40;$total, -3&#41;;
&#125;
    $mtu .= str_pad&#40;$milsec, 3, "0", STR_PAD_LEFT&#41;;





echo "Interval&#58; " . $mtu;

?> 

apoelista88
Δημοσιεύσεις: 19
Εγγραφή: 11 Σεπ 2005 03:11

Διαφορά χρόνου με χιλιοστά

Δημοσίευση από apoelista88 » 13 Οκτ 2008 14:43

Φίλε DGeorge ωραία αυτα που λές και συμφωνώ απόλυτα και επειδή και εγώ πιστεύω στο ότι τα προβλήματα είναι ωραίο να τα προσπαθούμε μέχρι τέλους και για ηθική ικανοποίηση αλλα κυρίως για τις γνώσεις που παίρνουμε στην πορεία. Απλα μετά απο πολλές ώρες κάπου το μυαλό σταματά να δουλεύει και δεν βγαίνει :P (αυτό ευτυχώς βγήκε) :D

Φίλε fafos σ'ευχαριστώ για την λύση σου η οποία είναι απόλυτα σωστή αλλά λίγο μετά το πόστ είχα βρεί το λάθος παίρνοντας το πρόβλημα αντίστροφα και τελικά ήταν στην μετατροπή των δευτερολέπτων τα οποία έπρεπε να διαιρούνται δια 1000 και όχι δια 60 όπως το αρχικό μου. H δική μου λύση για να βρίσκεται αν χρειάζεται και σε κάποιον άλλο είναι

Κώδικας: Επιλογή όλων

<?php

$starttime = '1.22.35.843';
$finishtime = '1.24.38.343'; 
$st = explode&#40;".", $starttime&#41;;
$fi = explode&#40;".", $finishtime&#41;;

$starttime = $st&#91;3&#93; + &#40;$st&#91;2&#93;*1000&#41; + &#40;$st&#91;1&#93;*60000&#41; + &#40;$st&#91;0&#93;*3600000&#41;;
$finishtime = $fi&#91;3&#93; + &#40;$fi&#91;2&#93;*1000&#41; + &#40;$fi&#91;1&#93;*60000&#41; + &#40;$fi&#91;0&#93;*3600000&#41;;



$total = $finishtime - $starttime;



$minutes= sprintf&#40;'%02d',floor&#40;$total / 60000&#41;&#41;;
$remainder = $total % 60000;
$seconds = sprintf&#40;'%02d',floor&#40;$remainder / 1000&#41;&#41;;
$remainder = $total % 1000;
$milliseconds = sprintf&#40;'%02d',floor&#40;$remainder&#41;&#41;;


echo "Interval&#58; " . $minutes . "." . $seconds . "." . $milliseconds;



?> 

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες