Απορια: Πραξεις με Ημερομηνιες...

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

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

Απάντηση
nycos
Δημοσιεύσεις: 8
Εγγραφή: 09 Μάιος 2006 21:33

Απορια: Πραξεις με Ημερομηνιες...

Δημοσίευση από nycos » 07 Νοέμ 2007 16:45

Γεια χαρά,

έχω φτιάξει μια βασουλα απλή κ λιτή, σε ενα πεδίο βαζω μια ημ/νια με μορφη ετος/μηνας/μερα και στο διπλα πεδιο δινει ο χρήστης τη διάρκεια σε μηνες που επιθυμεί. Θελω στο επομενο πεδιο να προσθέτω την διάρκεια αυτη ωστε να εχω σωστή ημ/νια λήξης

πως θα το κάνω? κάτι βρήκα αλλά μου χαλάει το έτος :(

έχει διαφορά που το έχω στημένο στο windows pc μου κ οταν το τελειώσω θα ανεβεί σε linux server?

Άβαταρ μέλους
Alice_Cooper
Δημοσιεύσεις: 1947
Εγγραφή: 11 Μάιος 2007 00:33
Τοποθεσία: Ioannina
Επικοινωνία:

Απορια: Πραξεις με Ημερομηνιες...

Δημοσίευση από Alice_Cooper » 07 Νοέμ 2007 17:41

nop den paizei rolo ...
mono isos kapoies diafores stis rithmishs tis php
sto server isos se anagasei na kaneis mikroallages.....

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

echo "Exoume ".date("Y-m-d");
echo "Se ena mhna ".date("Y-m-d", strtotime("+1 months"));

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

Απορια: Πραξεις με Ημερομηνιες...

Δημοσίευση από Banavas » 07 Νοέμ 2007 17:44

Ελπίζω να σε βοηθάει το παρακάτω παράδειγμα.

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

$nextmonth = mktime(0, 0, 0, date("m")+1, date("d"),   date("Y"));
στη θέση του 1 μπορείς να βάλεις το $_POST['months'] ; οπου months οι μήνες που δίνει ο χρήστης στην φόρμα.
Happy coding....
Μάρκος
http://lasernet.gr

nycos
Δημοσιεύσεις: 8
Εγγραφή: 09 Μάιος 2006 21:33

Απορια: Πραξεις με Ημερομηνιες...

Δημοσίευση από nycos » 07 Νοέμ 2007 20:23

Ευχαριστω πολυ παιδια. Δεν μου δουλεύει το εξης: την ημ/νια που θα προστεθουν οι μηνες ειναι καταχωρημενη στην βαση, την διαβαζω κανονικα αλλα οχι σωστα γιατι οτι κ να κανω με τις εντολες αυτες μου κανει πραξεις πανω στην ημ/νια: 1970-01-01


Τι κανω λαθος εδω? startdate και diarkeia ειναι οι μτβλ...

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


$nextmonth = mktime(0, 0, 0, date("m",$row['startdate'])+$row['diarkeia'] , date("d",$row['startdate']), date("Y",$row['startdate']));



Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

Απορια: Πραξεις με Ημερομηνιες...

Δημοσίευση από Banavas » 07 Νοέμ 2007 21:24

Δοκίμασε

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

$nextmonth = mktime(0, 0, 0, substr($row['startdate'],5,2)+$row['diarkeia'] , substr($row['startdate'],8,2), substr($row['startdate'],0,4)); 
θα σου συνιστούσα να χρησιμοποιήσεις timestamp αντί για την ημερομηνία (ΥΥΥΥ-ΜΜ-ΔΔ)
Happy coding....
Μάρκος
http://lasernet.gr

Άβαταρ μέλους
Alice_Cooper
Δημοσιεύσεις: 1947
Εγγραφή: 11 Μάιος 2007 00:33
Τοποθεσία: Ioannina
Επικοινωνία:

Απορια: Πραξεις με Ημερομηνιες...

Δημοσίευση από Alice_Cooper » 07 Νοέμ 2007 22:47

xmmm dikimases me

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

echo $row['startdate'];
na deis ti times pernei???

nycos
Δημοσιεύσεις: 8
Εγγραφή: 09 Μάιος 2006 21:33

Απορια: Πραξεις με Ημερομηνιες...

Δημοσίευση από nycos » 08 Νοέμ 2007 02:11

Alice_Cooper έγραψε:xmmm dikimases me

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

echo $row['startdate'];
na deis ti times pernei???
με αυτην τυπωνεται σωστα η ημ/νια μου

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

Απορια: Πραξεις με Ημερομηνιες...

Δημοσίευση από Banavas » 08 Νοέμ 2007 18:01

γράψε και την ημερομηνία που δείχνει....
Happy coding....
Μάρκος
http://lasernet.gr

nycos
Δημοσιεύσεις: 8
Εγγραφή: 09 Μάιος 2006 21:33

Απορια: Πραξεις με Ημερομηνιες...

Δημοσίευση από nycos » 08 Νοέμ 2007 22:13

με:

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

echo $row['startdate'];
παίρνω:
2007-04-22

+ με:

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

$nextmonth = mktime(0, 0, 0, date("m",$row['startdate'])+$row['diarkeia'] , date("d",$row['startdate']), date("Y",$row['startdate']));
echo date("Y-m-d", $nextmonth);
παίρνω:
1970-04-01

(η τιμη της diarkeia ειναι σωστα 4)...

Άβαταρ μέλους
Alice_Cooper
Δημοσιεύσεις: 1947
Εγγραφή: 11 Μάιος 2007 00:33
Τοποθεσία: Ioannina
Επικοινωνία:

Απορια: Πραξεις με Ημερομηνιες...

Δημοσίευση από Alice_Cooper » 09 Νοέμ 2007 00:39

nycos έγραψε:με:

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

echo $row['startdate'];
παίρνω:
2007-04-22

+ με:

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

$nextmonth = mktime(0, 0, 0, date("m",$row['startdate'])+$row['diarkeia'] , date("d",$row['startdate']), date("Y",$row['startdate']));
echo date("Y-m-d", $nextmonth);
παίρνω:
1970-04-01

(η τιμη της diarkeia ειναι σωστα 4)...
gia look kati tetoio

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

$string=$row['startdate'];
$nums=explode("-",$string); 
echo "Apo: ".date("M-d-Y", mktime(0, 0, 0, $nums[1] , $nums[2], $nums[0]));
$drk=$row['diarkeia'];
$mns=$nums[1]+$drk;
$yr=$nums[0];
$dy=$nums[2];
if ($mns>12) { 
      $mns=$mns-12;
      $yr=$yr+1;
}
echo " eos: ".date("M-d-Y", mktime(0, 0, 0, $mns, $dy, $yr));
p.s. elpizo na mhn ksexasa allo dollario ....
p.s. 2 sostotath h dieresh me to 13 dik_
Τελευταία επεξεργασία από το μέλος Alice_Cooper την 09 Νοέμ 2007 01:42, έχει επεξεργασθεί 1 φορά συνολικά.

Άβαταρ μέλους
dik_
Δημοσιεύσεις: 476
Εγγραφή: 07 Ιουν 2007 11:28

Απορια: Πραξεις με Ημερομηνιες...

Δημοσίευση από dik_ » 09 Νοέμ 2007 01:05

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

$row['startdate'] = '2007-04-22';
$row['diarkeia'] = 4;

$d = explode("-", $row['startdate']);

$m = ($d[1] + $row['diarkeia']) % 12;
$m = $m == 0 ? 12 : $m;
$m = strlen($m) == 1 ? "0".$m : $m;

$y = $d[0] + intval(($d[1] + $row['diarkeia']) / 13);

echo $y."-".$m."-".$d[2];

Άβαταρ μέλους
dik_
Δημοσιεύσεις: 476
Εγγραφή: 07 Ιουν 2007 11:28

Απορια: Πραξεις με Ημερομηνιες...

Δημοσίευση από dik_ » 09 Νοέμ 2007 01:20

ΟΚ, άλλο ένα βασισμένο στου Alice (το οποίο μάλλον βασίζεται στην εξυπνάδα της mktime):

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

$d = explode("-", $row['startdate']);
$d[1] += $row['diarkeia'];
while ($d[1] > 12){
	$d[1] -= 12;
	$d[0]++;
}
echo $d[0]."-".$d[1]."-".$d[2];

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

Απορια: Πραξεις με Ημερομηνιες...

Δημοσίευση από Banavas » 09 Νοέμ 2007 07:13

Οι πράξεις που κάνετε για να δείτε αν οι μήνες υπερβαίνουν το 12 ειναι περιττές.

Το mktime λειτουργεί ακόμα και με month = 14 ή 15 ή οτιδήποτε άλλο αριθμό και δίνει σωστό αποτέλεσμα, δηλαδή διορθώνει και τό μήνα και το έτος, αν π.χ. δώσεις 13 θα επιστέψει τον ιανουάριο του επομένου έτους. Ακόμα και αν δουλεύεις με μέρες και πέσεις π.χ. στις 31Απριλίου το διορθώνει σε 1 Μαρτίου.

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

$row['startdate'] = '2007-04-22'; 
$row['diarkeia'] = 4; 

$d = explode("-", $row['startdate']); 
$nextmonth = mktime(0, 0, 0, $d[1]+$row['diarkeia'] , $d[2], $d[0]); 
echo date("Y-m-d", $nextmonth);
Mε την χρήση του explode που ανέφερε ο dick ο κώδικας γίνεται πιο απλός.
Happy coding....
Μάρκος
http://lasernet.gr

Άβαταρ μέλους
dik_
Δημοσιεύσεις: 476
Εγγραφή: 07 Ιουν 2007 11:28

Απορια: Πραξεις με Ημερομηνιες...

Δημοσίευση από dik_ » 09 Νοέμ 2007 15:00

Μάστα, το εξάγεις απ' το παράδειγμα του API, αλλά μάλλον θα έπρεπε να το λέει ξεκάθαρα και στο κυρίως κείμενο ;)

nycos
Δημοσιεύσεις: 8
Εγγραφή: 09 Μάιος 2006 21:33

Απορια: Πραξεις με Ημερομηνιες...

Δημοσίευση από nycos » 09 Νοέμ 2007 18:27

Παιδες! Υπερευχαριστω!

με του Alice_Cooper που δοκιμασα 1στ ολα τζετ!

Θανκςςςςς ;)

Απάντηση

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

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

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