WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   PHP - script som visar X dagar, X timmar sedan (https://www.wn.se/forum/showthread.php?t=11864)

bo82 2006-01-17 23:21

Jag letar efter en funktion där man skickar ett datum (timestamp tex) och får tillbaka hur många månader dagara å timmar sedan det var...

Har sett det på engelska men hittar inte ens det nu..

Finns det på svenska?

Helix 2006-01-17 23:25

Det måste var lätt att koda. Ett formulär, 2 rader kod och så har man det. Kanske skriva det själv?

(Om du har varit webmaster sedan 2000 kanske du har en sida att visa förutom www.google.se i din profil - läs reglerna för forumet)

bo82 2006-01-17 23:27

Tack för ditt givande svar.

Helix 2006-01-17 23:37

Ja, men varför letar man efter ett script som man skriver på 2 minuter?

1. Ta stränger omvandla till timestamp
2. Ta 1 och dra bort från dagens timestamp = antal sekunder
3. räkna ut timamr och minuter
4. Visa det!

bo82 2006-01-18 00:09

Citat:

Originally posted by Terabyte@Jan 18 2006, 00:37
Ja, men varför letar man efter ett script som man skriver på 2 minuter?

1. Ta stränger omvandla till timestamp
2. Ta 1 och dra bort från dagens timestamp = antal sekunder
3. räkna ut timamr och minuter
4. Visa det!

Antagligen var jag inte tillräckligt tydlig..

Jag letade efter ett script som kunde visa antalet Minuter,Dagar,Månader sedan ett visst datum angets..

Jag hittade detta script i form av plugin till wordpress till slut..

Kod:

function time_since($older_date, $newer_date = false)
        {
        // array of time period chunks
        $chunks = array(
        array(60 * 60 * 24 * 365 , 'year'),
        array(60 * 60 * 24 * 30 , 'month'),
        array(60 * 60 * 24 * 7, 'week'),
        array(60 * 60 * 24 , 'day'),
        array(60 * 60 , 'hour'),
        array(60 , 'minute'),
        );
       
        // $newer_date will equal false if we want to know the time elapsed between a date and the current time
        // $newer_date will have a value if we want to work out time elapsed between two known dates
        $newer_date = ($newer_date == false) ? (time()+(60*60*get_settings("gmt_offset"))) : $newer_date;
       
        // difference in seconds
        $since = $newer_date - $older_date;
       
        // we only want to output two chunks of time here, eg:
        // x years, xx months
        // x days, xx hours
        // so there's only two bits of calculation below:

        // step one: the first chunk
        for ($i = 0, $j = count($chunks); $i < $j; $i++)
 {
 $seconds = $chunks[$i][0];
 $name = $chunks[$i][1];

 // finding the biggest chunk (if the chunk fits, break)
 if (($count = floor($since / $seconds)) != 0)
        {
        break;
        }
 }

        // set output var
        $output = ($count == 1) ? '1 '.$name : "$count {$name}s";

        // step two: the second chunk
        if ($i + 1 < $j)
 {
 $seconds2 = $chunks[$i + 1][0];
 $name2 = $chunks[$i + 1][1];
 
 if (($count2 = floor(($since - ($seconds * $count)) / $seconds2)) != 0)
        {
        // add to output var
        $output .= ($count2 == 1) ? ', 1 '.$name2 : ", $count2 {$name2}s";
        }
 }
       
        return $output;
        }


zoran 2006-01-18 15:58

Usch, PHP suger verkligen.

Tur att jag blivit upplyst, så jag slapp förlora ytterligare 2 år på att utveckla PHP-färdigheter.

Robert 2006-01-18 16:19

Men va tusan, kan ni inte subtrahera två datum/tid i PHP? :ph34r:

(själv kan jag noll PHP, därav min hängande käke)

DeSoto 2006-01-18 17:28

Citat:

Originally posted by zoran@Jan 18 2006, 16:58
Usch, PHP suger verkligen.
Tur att jag blivit upplyst, så jag slapp förlora ytterligare 2 år på att utveckla PHP-färdigheter.

OT, men får man fråga vad du valt istället?

PeterM 2006-01-18 17:35

Klart det går att göra i PHP, är inte ens svårt. När man väl har antalet sekunder så är det bara att dividera upp dem i antalet månader, veckor eller vad man nu är ute efter.

Kod:

<?php
echo floor((time() - strtotime($ditt_datum)) / (24*60*60));
?>


koala 2006-01-18 17:36

Citat:

Originally posted by zoran@Jan 18 2006, 16:58
Usch, PHP suger verkligen.
Tur att jag blivit upplyst, så jag slapp förlora ytterligare 2 år på att utveckla PHP-färdigheter.

Visserligen håller jag med om att PHP suger men kodsnutten var synnerligen märkligt skriven och knappast det bästa sättet att lösa uppgiften på i PHP.

Helix 2006-01-18 18:04

Nej, det varkar som trådskaparen inte kan göra det själv, så han får ju använda det han hittar.....:)

zoran 2006-01-18 22:37

Citat:

Ursprungligen postat av DeSoto
Citat:

Ursprungligen postat av zoran
Usch, PHP suger verkligen.
Tur att jag blivit upplyst, så jag slapp förlora ytterligare 2 år på att utveckla PHP-färdigheter.

OT, men får man fråga vad du valt istället?

Jo, jag började med PHP, men jag _tvingades_ börja programmera java i mitt nuvarande jobb. Tidigare har jag mött java i mina jobb mest som systemadmin och hatade allt som hade med det att göra.

Nu, anser jag att det är enda sanna språket man kan använda ifall man ska göra något seriösare på webbfronten.

Java ställer mycket högre krav på programmeraren, och samtidigt tillhandahåller mer verktyg känns det som.

Det att det ställer högre krav, kan tyckas jobbigt i början, men sen är det bara bra.

Per 2006-01-18 23:36

Jag föreslår att vi lämnar debatten om de olika språken då tråden inte handlar om det. Vidare tillför inlägg som "Usch, PHP suger verkligen" inte någonting.

För övrigt finns en snyggare implementation av den eftersökta funktionaliteten på följande URL: http://www.phpriot.com/d/code/date-t...ion/index.html

zoran 2006-01-19 08:58

Citat:

Originally posted by Per@Jan 19 2006, 00:36
Jag föreslår att vi lämnar debatten om de olika språken då tråden inte handlar om det. Vidare tillför inlägg som "Usch, PHP suger verkligen" inte någonting.

För övrigt finns en snyggare implementation av den eftersökta funktionaliteten på följande URL: http://www.phpriot.com/d/code/date-t...ion/index.html

Klat det tillför. Det tillför exempelvis min åsikt om PHP nu när jag provat andra språk. En del som kanske tror att PHP är det bästa, kan dra nytta av det och testa annat i så fall.

Men visserligen är det lite OT för just den här tråden, men du är ju moderator, du har ju säkert verktyg att splitta tråden istället för att försöka hindra en bra debatt.

Patek Philippe 2006-01-19 09:34

Citat:

Originally posted by zoran@Jan 19 2006, 09:58
Klat det tillför. Det tillför exempelvis min åsikt om PHP nu när jag provat andra språk. En del som kanske tror att PHP är det bästa, kan dra nytta av det och testa annat i så fall.
Men visserligen är det lite OT för just den här tråden, men du är ju moderator, du har ju säkert verktyg att splitta tråden istället för att försöka hindra en bra debatt.

Håller med, tycker det är en klart intressant diskussion. Jag har själv än så länge aldrig hamnat i den situationen att php inte räcker till eller känns omständigt att jobba med, men jag ligger hellre steget före och är glad om jag känner till sådana saker innan jag stött på problem halvvägs in i ett projekt.

DeSoto 2006-01-19 11:27

Citat:

Ursprungligen postat av zoran
Citat:

Ursprungligen postat av Per
Jag föreslår att vi lämnar debatten om de olika språken då tråden inte handlar om det. Vidare tillför inlägg som Usch, PHP suger verkligen inte någonting.
För övrigt finns en snyggare implementation av den eftersökta funktionaliteten på följande URL: http://www.phpriot.com/d/code/date-t...ion/index.html

Klat det tillför. Det tillför exempelvis min åsikt om PHP nu när jag provat andra språk. En del som kanske tror att PHP är det bästa, kan dra nytta av det och testa annat i så fall.
Men visserligen är det lite OT för just den här tråden, men du är ju moderator, du har ju säkert verktyg att splitta tråden istället för att försöka hindra en bra debatt.

Då skulle du ju kunna besvara min fråga om vilket språk du valt istället, och varför du valt det. =)

zoran 2006-01-19 12:50

Det gjorde jag ju, mitt sista inlägg före det du kommenterade. :)

DeSoto 2006-01-19 13:29

Ahhh, det läste jag ju. Märkte inte att det var du som skrev det.
Du har inget konkret exempel där du anser att java utklassar php?

zoran 2006-01-19 15:22

Citat:

Originally posted by DeSoto@Jan 19 2006, 14:29
Ahhh, det läste jag ju. Märkte inte att det var du som skrev det.
Du har inget konkret exempel där du anser att java utklassar php?

Bara det att PHP är svagt typat språk får en att börja fundera på något annat. Visst är det smidigt om man ska hacka ihop små gästböcker, men för stora applikationer är döden. Ta till exempel följande.
Kod:

$id = $_SESSION['id'];

...600 linjer kod

while ( $row = mysql_fetch_assoc()){
  $id = $row['id'];
  echo "current product has id " . $id;
}

I java vet du med dig att scope för id i while satsen är bara för den, så du skulle behöva definiera id så här.
Kod:

int id = Integer.parseInt(request.getSession(true).getAttribute("id"));

... 600 linjer kod

while (rs.next()){
 int id = rs.getInt('id');
 out.println("current product has id " + id);
}

varpå din kompilator skulle spy galla över dig eftersom "id" redan är definierat i en globalare scope. Likaså skulle kompilatorn aldrig låta dig lagra något annat än int i en variabel som är i "skåpet" definierad som int. Det är bra. För små prylar är det hugget som stucket, kanske tom lite smidigare utan typdeklaration.

En annan sak är att Java tvingar dig mer eller mindre att köra objektorienterat vilket är bra för större applikationer med fler utvecklare.

Vidare stödjer inte PHP överlagring av metoder vilket är mycket fint att ha.

I java kan jag skapa ett objekt, productfactory, med en metod getProducts() som returnerar alla produkter i databasen. Men sen kan jag om jag vill överlagra metoden att svälja en vektor med produktid och returnerar bara dessa produktobjekt.

Sen kan jag köra antigen
Vector products = productfactory.getProducts();
eller
Vector products = producfactory.getProducts(productids);

Och det är bara början.

DeSoto 2006-01-19 16:33

Det är la inga problem att göra det i PHP?

Det jag gillar med PHP är att det inte påtvingar programmeraren något. Vill man göra ett fulhack, så kan man göra det. Men vill man ha 100 % struktur och ordning, så finns det inget som hindrar en att ha det.

zoran 2006-01-19 17:16

Citat:

Originally posted by DeSoto@Jan 19 2006, 17:33
Det är la inga problem att göra det i PHP?

Det jag gillar med PHP är att det inte påtvingar programmeraren något. Vill man göra ett fulhack, så kan man göra det. Men vill man ha 100 % struktur och ordning, så finns det inget som hindrar en att ha det.

Hmm, jag håller inte med dig riktigt, men jag måste inte göra det :).

Jag tycker inte "fulhack" är nödvändiga. Speciellt i det här fallet. Att du inte tvingas deklarera en variabel ser jag inte som en frihet. Jag ser det som en möjlighet att missa eftersom du inte kan hålla all kod i huvet.

Struktur och ordning är en sak. Du kan ju ha oordning med Java också. Men att låta språket varna dig för fel du begår är bättre än att språket låter dig ha din "frihet".

Och vad är "inga problem att göra i php"? Överlagra metoder? Nja, du KAN inte överlagra metoder i php, utan istället får ta till hacket där du detekterar antalet argument till funktionen. Det blir fult och svårt att underhålla.

Dessutom kan ju en överlagrad metod i java ta två int medans en annan två strängar eller int och en vektor. I php, måste du bygga världens detektering kring allt detta. Det blir ännu svårare att underhålla.

Slutligen, att ta till fulhack är rätt "obra". Jag har sett många applikationer, inte minst den jag jobbar på nu, som startade som en liten obetydlig hemsida, men som med tiden växte till något så stort att ingen kunde ana det. I det här fallet var språket java och ingen tog till "fulhack" (iallafall inte så ofta), och det är jag glad för.

Xertoz 2006-01-23 20:43

Orkar inte dra ut det hela med exakta månader så håll till godo med detta :P :
Kod:

        // Ställ in de 2 tidpunkterna (nu och då)
        $CurrentTime = date("U");
        $CompareTo = "0"; // Ställ in datum att jämföra med här i unix-tid
       
        // Dra ut hur många sekunder som gått totalt
        $TimePast = $CurrentTime - $CompareTo;
       
        // Rensa ut dagar,timmar,minuter,sekunder
        $Days = floor($TimePast/(3600*24));
        $Hours = floor($TimePast/3600-($Days)*24);
        $Minutes = floor($TimePast/60-($Hours+$Days*24)*60);
        $Seconds = floor($TimePast-$Minutes*60-$Hours*3600-$Days*3600*24);


bo82 2006-01-29 14:27

Citat:

Originally posted by zoran@Jan 19 2006, 09:58
Klat det tillför. Det tillför exempelvis min åsikt om PHP nu när jag provat andra språk. En del som kanske tror att PHP är det bästa, kan dra nytta av det och testa annat i så fall.

Men visserligen är det lite OT för just den här tråden, men du är ju moderator, du har ju säkert verktyg att splitta tråden istället för att försöka hindra en bra debatt.

Men det tillför inte mig nånting och det är det som räknas. Jag bryr mig heller inte om din åsikt, men om jag nån dag får för mig att göra det, ska jag skapa en tråd alldeles bara för din skull. "Tråden om zorans åsikter!" skulle den kunna heta.

zoran 2006-01-29 18:16

Citat:

Originally posted by bo82@Jan 29 2006, 15:27
Men det tillför inte mig nånting och det är det som räknas. Jag bryr mig heller inte om din åsikt, men om jag nån dag får för mig att göra det, ska jag skapa en tråd alldeles bara för din skull. "Tråden om zorans åsikter!" skulle den kunna heta.
Ah förlåt, jag glömde just dig, den unika representationen av allt folk här på WM. Visste jag att du ensam bestämmer vad som tillför och inte tillför något här på WM, hade jag naturligtvis aldrig vågat trotsa natrukraften.

Nu lite allvar, jag tror ändå att vissa människor ansåg att det tillförde något. Så logiskt sett, tillförde det något för dem. Så logiskt sett tillförde det något. Samtidigt så tillförde det inget för dig. Men eftersom du är representativ för ALLA här på WM endast i dina drömmar, tolkar jag logiskt ditt uttalande som skitsnack.

Om vi går djupare i filosoferande, så blev jag av moderatorn anklagad att mitt inlägg inte "tillför" något. Eftersom mitt inlägg tillförde min åsikt om ämnet, så är betydelsen av ordet "tillför" tillfredställd. Sen om just DU tycker, det är så intressant, är upp till dig. Det är ingen som tvingar dig att läsa.


Alla tider är GMT +2. Klockan är nu 12:11.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson