"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

es nimmt kein ende [php]

bBU.CyTrobIc 14.02.2003 - 13:58 1044 16
Posts

bBU.CyTrobIc

#include "billrulz.h"
Avatar
Registered: Oct 2000
Location: Hamburg
Posts: 1875
ich weiss ich nerv :O, aber:

ich brauch mal ne kleine Funktion, wenn einer dazu lust hat:

der 01.01.2003 muss die zahl 0 sein
und
der 31.12.2003 muss die zahl 100 sein
und
alle daten dazwischen müssen dazwischenliegen
also
der 01.06.2003 muss ca.: 50 sein.

is bischen schwierig, aber vielleicht kann mir ja wer helfen,
php und javascriptlösungen sind willkommen :)

danke,
Gerrit

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
leichteste übung:

Zitat
For example, the following PHP code:

<? echo time(); ?>

Will quickly translate into:
1024334785
Though this may not be very user friendly, it is an accurate measure of the date and time. This numeric date and time format originates from the fact that all Unix servers tell time by counting the number of seconds that have passed since 12:00 a.m. on January 1, 1970. All we need to do is learn how to display the above information in a way that makes sense to our site visitors.

-> mit dem kannst das "relative datum" des starttages raussuchen und dementsprechend zu "null" machen und von dort weiterzählen.

hope that helped.

bBU.CyTrobIc

#include "billrulz.h"
Avatar
Registered: Oct 2000
Location: Hamburg
Posts: 1875
jo irgendwie mitm timestamp aber wie sag ich dem jetzt das timestamp(01.01.2003 00:00:00) = 0 und (01.01.2003 00:00:00) = 100 ist ?! und das er die zwischendaten pro tag generieren soll ? *ratlos*

gerrit

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von bBU.CyTrobIc
jo irgendwie mitm timestamp aber wie sag ich dem jetzt das timestamp(01.01.2003 00:00:00) = 0 und (01.012.2003 00:00:00) = 100 ist ?! und das er die zwischendaten pro tag generieren soll ? *ratlos*

gerrit
einfache mathematische sache: (prozentrechnung :eek:)
Code: PHP
function createmytime($datestart, $dateend, $x)
{
 $datediff = $dateend-$datestart;
 $datexdiff = $x/100*$datediff;
 return $datexdiff + $datestart;
}

// start-endwert definitionen
$time0 = mktime ( 0, 0, 0, 1, 1, 2003);
$time100 = mktime ( 0, 0, 0, 12, 1, 2003);
$x = 50;

//ausgabe
echo createmytime($time0, $time100, $x);

ich gebe keine garantie auf funktionsfähigkeit des scriptes! (dass man da noch optimieren kann ich mir klar - ich habs absichtlich lang geschrieben...)

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
huh.. nach der dezimalen swatch internet-time (1 tag = 1000 einheiten) kommt jetzt der dezimale jahreskalender ? :D

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
sternzeit :D
1 jahr == 1000 ;)

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
Das kann zu unangenehmen komplikationen führen, wenn man alles nur noch in promille rechnet :)

bBU.CyTrobIc

#include "billrulz.h"
Avatar
Registered: Oct 2000
Location: Hamburg
Posts: 1875
thx jungs ich probier das script gleich mal aus !!!

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von bBU.CyTrobIc
thx jungs ich probier das script gleich mal aus !!!
is mir grad aufgefallen: die funktion gibt nur den timestamp zurück, damit du die zeit formatiert zurückbekommst, brauchst du die funktion:
http://www.php.net/manual/de/function.date.php

bBU.CyTrobIc

#include "billrulz.h"
Avatar
Registered: Oct 2000
Location: Hamburg
Posts: 1875
nee das script gibt mir ja die zeit aus bei x = 50 isses dann also der 1.6.2003, aber der soll mir am 1.6.2003 = 50 ausgeben ?! :)

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
also, da hab ich dich wohl falsch verstanden...

aber du solltest echt mal nachhilfe nehmen - aber nicht in proggen, sondern in mathe...
Code: PHP
function createmytime($datestart, $dateend, $datex)
{
 // variablen prüfen
 if($datestart>$datex or $dateend<$datex or $datestart==$dateend)
 {
  return FALSE;
 }
 // differenz zw. 1. und 2. datum
 $datediff = $dateend-$datestart;
 // prozentwert berechnen
 $dateprzt = $datex/$datediff*100;
 // gerundete ausgabe
 return round($dateprzt,2);
}

// start-endwert definitionen
$time0 = mktime ( 0, 0, 0, 1, 1, 2003);
$time100 = mktime ( 0, 0, 0, 12, 1, 2003);
// das datum, von dem der wert gesucht ist
$datex = mktime ( 0, 0, 0, 6, 1, 2003);
// alternativ:
// $datex = strtotime ("1 June 2003"); 

//ausgabe
echo createmytime($time0, $time100, $datex);
alternative formate für die strtotime-funktion: http://www.gnu.org/manual/tar-1.12/...pter/tar_7.html

wieder gebe ich keine garantie auf funktionsfähigkeit des scriptes...
Bearbeitet von watchout am 15.02.2003, 21:24 (ich leb noch im jahr 2000...)

bBU.CyTrobIc

#include "billrulz.h"
Avatar
Registered: Oct 2000
Location: Hamburg
Posts: 1875
hmm immernoch nicht das was ich suche :) trotzdem vielen dank für deine hilfe. muss ich nochmal selber schaun ;)

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von bBU.CyTrobIc
hmm immernoch nicht das was ich suche :) trotzdem vielen dank für deine hilfe. muss ich nochmal selber schaun ;)
ich glaub dann solltest du dir mal überlegen ob du dich richtig ausdrückst - wenn du nicht genau sagst was du möchtest, dann wirds nie was werden, ausserdem ist die schlechteste antwort eine nicht begründete.

bBU.CyTrobIc

#include "billrulz.h"
Avatar
Registered: Oct 2000
Location: Hamburg
Posts: 1875
-gelöscht-

bBU.CyTrobIc

#include "billrulz.h"
Avatar
Registered: Oct 2000
Location: Hamburg
Posts: 1875
siehst du denn die smileys nicht sprach er und postete den code :D

Code: PHP
<?php


//----- Prozentrechnungsfunktion


$time000 = mktime ( 0, 0, 0, 1, 1, 2003);		// Startdatum 0 %
$time100 = mktime ( 0, 0, 0, 1, 1, 2004);		// Enddatum 100 %
$timenow = time();					// Aktuelle Zeit

$time = 0;						// Setzt Zeit auf 0

$timepro = ($time100 - $time000) / 100;			// 1/100 der Gesamtzeit = 1 %
$timeday = ($time100 - $time000) / 365;			// % die an einem Tag erreicht werden

$timetes = 0.27397260273973;				// % die an einem Tag erreicht werden

$i = $time000;						// Setzt i auf die Startzeit

while($i <= $timenow){					// solange i nicht so gross ist wie die aktuelle Zeit

	$time = $time + $timetes;			// Werden die Prozente Pro Tage hochgerechnet
	$i = $i + 86400;				// 86400 sek = 1 Tag, i Zählt die Tage hoch
}
	
$proz = round($time, 0);				// Prozente gerundet auf Ganze Zahlen
$ptwo = round($time, 2);				// Prozente gerundet auf 2 stellen

echo("$proz / $ptwo");

?>

Anstatt der Selbstgenerierten $timetes Variable könnte man auch die $timeday variable nutzen...

So funtzt es, probiers mal aus, dann weisst du was ich meinte :)

Thx trotzdem nochmal für eure Hilfe,
Gruss Gerrit
Bearbeitet von bBU.CyTrobIc am 17.02.2003, 12:47
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz