EdgarsK Posted November 27, 2009 Report Share Posted November 27, 2009 Sveiki, varbūt kādam ir aizķērusies funkcija ar kuras palīdzību nosaka timestamp vērtības attālumu ar vārdiem ?! Piemēri: return "Pirms pāris sekundēm"; return "Pirms 1 minūtes"; return "Pirms stundas"; return "Pēc 2 stundām"; return "Pēc 2 stundām, 15 minūtēm"; return "Pēc nedēļas, 3 dienām"; return "Pēc 3 nedēļām, 1 dienas"; return "Pirms stundas, 3 minūtēm"; return "Pirms 3 stundām, 45 minūtēm"; Quote Link to comment Share on other sites More sharing options...
EdgarsK Posted November 27, 2009 Author Report Share Posted November 27, 2009 :) tiešām neviens ? :) Quote Link to comment Share on other sites More sharing options...
NBX Posted November 27, 2009 Report Share Posted November 27, 2009 function distanceOfTimeInWords($fromTime, $toTime = 0, $showLessThanAMinute = false) { $distanceInSeconds = round(abs($toTime - $fromTime)); $distanceInMinutes = round($distanceInSeconds / 60); if ( $distanceInMinutes <= 1 ) { if ( !$showLessThanAMinute ) { return ($distanceInMinutes == 0) ? 'mazāk nekā pirms minūtes' : 'pirms minūtes'; } else { if ( $distanceInSeconds < 5 ) { return 'mazāk nekā pirms 5 sekundēm'; } if ( $distanceInSeconds < 10 ) { return 'mazāk nekā pirms 10 sekundēm'; } if ( $distanceInSeconds < 20 ) { return 'mazāk nekā pirms 20 sekundēm'; } if ( $distanceInSeconds < 40 ) { return 'apmēram pirms pusminūtes'; } if ( $distanceInSeconds < 60 ) { return 'mazāk nekā pirms minūtes'; } return 'pirms minūtes'; } } if ( $distanceInMinutes < 45 ) { return 'pirms ' .$distanceInMinutes . ' minūtēm'; } if ( $distanceInMinutes < 90 ) { return 'apmēram pirms 1 stundas'; } if ( $distanceInMinutes < 1440 ) { return 'apmēram pirms ' . round(floatval($distanceInMinutes) / 60.0) . ' stundām'; } if ( $distanceInMinutes < 2880 ) { return 'pirms 1 dienas'; } if ( $distanceInMinutes < 43200 ) { return 'apmēram pirms ' . round(floatval($distanceInMinutes) / 1440) . ' dienām'; } if ( $distanceInMinutes < 86400 ) { return 'apmēram pirms mēneša'; } if ( $distanceInMinutes < 525600 ) { return 'apmēram pirms ' . round(floatval($distanceInMinutes) / 43200) . ' mēnešiem'; } if ( $distanceInMinutes < 1051199 ) { return 'apmēram pirms 1 gada'; } return 'pār ' . round(floatval($distanceInMinutes) / 525600) . ' gadiem'; } Quote Link to comment Share on other sites More sharing options...
KarlisBa Posted November 27, 2009 Report Share Posted November 27, 2009 NBX, tā funkcija manuprāt ir pārāk gara un arī neefektīva. Labāk izmanto no tās pašas php.net kodu zem time() Quote Link to comment Share on other sites More sharing options...
NBX Posted November 29, 2009 Report Share Posted November 29, 2009 Viņa ir domāta priekš PHP NOW() Quote Link to comment Share on other sites More sharing options...
waplet Posted November 29, 2009 Report Share Posted November 29, 2009 Paldies, man viss arī ar to funkciju strādā :) Quote Link to comment Share on other sites More sharing options...
false Posted December 12, 2009 Report Share Posted December 12, 2009 Un kā viņu pareizi noregulēt? Kur likt ieraksta laiku utt. Quote Link to comment Share on other sites More sharing options...
senters Posted September 29, 2010 Report Share Posted September 29, 2010 Arī man šī lieta ir vajadzīga, lai katram postam uzrādītos pirms cik ilga laika ir pievienots. Šo fju glabāju functions.php, neko nemainot. Bet kā man izsaukt (ar kādiem parametriem) to iekš vajadzīgās vietas citā failā? Quote Link to comment Share on other sites More sharing options...
senters Posted September 29, 2010 Report Share Posted September 29, 2010 Nedaudz sīkāk: Db ir pievienošanas datums ---> date_created (xx.xx.xxxx xx:xx:xx) (šis gan ir varchar, nevis kāds no date tipiem) šādi iegūstu tagadējo laiku: $time_now = date("H:i"); xx:xx (hh:mm) šādi no date_created iegūstu tikai xx:xx (hh:mm) --> $date_created_time = substr($date_created,-8,5); un to fju pasaucu: echo distanceOfTimeInWords($date_created_time, $time_now, $showLessThanAMinute = false); atgriež: mazak neka pirms minutes , visiem ierakstiem, kautgan ieraksti pievienoti dažādos laikos, un neviens pirms minūtes. Quote Link to comment Share on other sites More sharing options...
senters Posted September 30, 2010 Report Share Posted September 30, 2010 (edited) Neviens negrib paskatīties? :) Galīgi negribu taisīt jaunu topiku 1:1 ar šo, lai tikai izceltu šo jautājumu. Edited September 30, 2010 by senters Quote Link to comment Share on other sites More sharing options...
Grey_Wolf Posted September 30, 2010 Report Share Posted September 30, 2010 Db ir pievienošanas datums ---> date_created (xx.xx.xxxx xx:xx:xx) (šis gan ir varchar, nevis kāds no date tipiem) kapec Warchar? Ja buutu date lauks tad elementari dabuutu UnixTimestampu, un talak jau ar IF/ELSE + nedaudz matimatikas dabuun jebkuru laika intervalu (vakar shodien pirms gada etc) piedevam pashu datumu arii uzreiz noformatee ieksh SQL kverija ta tev jaizveido tas UNIXtimestamps un tad jau talak jadarbojaas... Liela mulkjiiba ir DB datumu glabat ieksh Warchar (tam domti date vai Unixtimestamp formati)-> protams fiziski tas ir reali, bet nu galiigi stulbi, jo faktiski apgrutina datuma apstradi, arii mekleeshanu pec menesha etc ... Quote Link to comment Share on other sites More sharing options...
xPtv45z Posted September 30, 2010 Report Share Posted September 30, 2010 Funkcijai varbūt nav ne vainas. Bet, ja tu padod - $time_now = date("H:i");, kas piemēram ir 15:47 un $date_created_time = substr($date_created,-8,5);, kas piemēram ir 14:47 Vadoties pēc šī $distanceInSeconds = round(abs($toTime - $fromTime));, cik tavuprāt ir round(abs('15:47'-'14:47'))=? Quote Link to comment Share on other sites More sharing options...
senters Posted October 12, 2010 Report Share Posted October 12, 2010 Atgriežoties pie šīs lietas: Atradu pavisam labu skriptu: http://www.9lessons.info/2010/01/php-time-stamp-function.html Pasauc to šādi: $session_time = strtotime($event_date_created); // $event_date_created - db ieraksts (TIMESTAMP) $time_display = time_stamp($session_time); echo $time_display; // izvada pārveidotu pievienošanas laiku Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.