logi sisse meist KKK

Tere,

Minu probleem on selline, et mul on SQLis selline date: 2009-12-12 11:43:27. Kuidas ma saaksin teha, et ta selle asemel kuvaks 11:43 12.12.2009? Lugesin internetis substri kohta aga no mitte ei tule välja... Leidsin isegi sellise koodi jupi:

function prettydate($uglydate) { 
    return date("d.m.y", mktime(0,0,0,substr($uglydate, 5, 2),substr($uglydate, 8,2),substr($uglydate, 0, 4)));
}

aga ta näitab 12.12.2009. Mõtlesin, et ahha puudu on ju vajalikud date tunni ja minuti jupid.

function prettydate($uglydate) { 
    return date("H:i d.m.y", mktime(0,0,0,substr($uglydate, 5, 2),substr($uglydate, 8, 2),substr($uglydate, 0, 4)));
}

Aga siis näitab 00:00 12.12.09. Siis lugesin mktime kohta ja tund, minut ja sekund on praegu 0. Aga kuidas neid substriga sellest SQList saadud andmega asenda, ei saanud ma aru.

Loodetavasti saite aru. Ette tänades.

küsitud Dec 12 '09 at 10:17

Korx300%201's gravatar image

Korx300 1
1112

edited Dec 12 '09 at 22:07

Rene%20Saarsoo's gravatar image

Rene Saarsoo ♦♦
1.1k101121

function prettydate($uglydate) {

return date("H:i d.m.y", mktime(substr($uglydate, 11,2),substr($uglydate, 14,2),0,substr($uglydate, 5, 2),substr($uglydate, 8, 2),substr($uglydate, 0, 4)));

}

Sain ikkagi hakkama peale pikka pusimist. Võite ära kustutada. Vabandust.

(Dec 12 '09 at 10:21) Korx300 1

Pole tarvis vabandada, ikka juhtub, et nii kui oled küsimuse esitanud, leiad ise juba lahenduse. Kuid pole põhjust ka teemat sulgeda - nagu näed, on siin välja pakutud juba mitmeid elegantseid lahendusi.

(Dec 12 '09 at 22:12) Rene Saarsoo ♦♦

loodan, et ei pahanda kuid veidi rohkem "decent" viis

echo strftime("%H:%M %d.%m.%Y", strtotime("2009-12-12 11:43:27"));

muidugi kui andmed tulevad mysqlist siis oleks targem juba seal teha vastavad teisendused

link

vastatud Dec 12 '09 at 15:28

erti%202's gravatar image

erti 2
71347

Mina kasutaks kuupäeva formaadi muutmiseks SQLi enda funktsioone, need on igas SQL serveris olemas.

Paraku sa ei öelnud, et millist SQL serverit sa kasutad. Vihjena võin öelda, et neid on päris mitmeid erinevaid.

Näiteks PostgreSQLis saab soovitud tulemuse nii:

SELECT TO_CHAR('2009-12-12 11:43:27'::timestamp, 'HH24:MI MM.DD.YYYY');

to_char esimene argument võib mõistagi olla tabeli tulp.

link

vastatud Dec 12 '09 at 17:30

Anti%20Veeranna's gravatar image

Anti Veeranna
2063

Kui seda teha andmebaasis, siis minu arust lähevad arhitektuurilises mõttes andmekiht ja esitluskiht omavahel sassi. Nt kui tegemist on klient-server rakendusega, siis igal kliendil võib olla erinev locale sõltuvalt sellest, mis regiooni alla Windows seadistatud on. Soovitavalt võiks kasutada Windowsi locale settinguid kuupäeva kuvamiseks, mitte kirjutada kuupäeva formaat iga locale jaoks koodi sisse.

(Dec 14 '09 at 09:33) Tambet Matiisen ♦♦

Tõsi ta on, kuupäevi võiks tõesti kuvada kasutades operatsioonisüsteemi seadistusi. Aga mitte alati ei ole see võimalik - näiteks kust peaks üks veebirakendus teadma sinu masina kuupäevaformaati? Brauser seda ju ei edasta.

(Dec 14 '09 at 09:52) Anti Veeranna

Minu peamine probleem küsija enda pakutud lahendusega on aga see, et seda kuupäeva töödeldakse kui stringi, ehk üritatakse välja mõelda, et mis kuupäev seal ikkagi olla võiks. Samas kui andmebaas juba teab, et see on kuupäev ja oskab seda välja anda sobivalt formaaditult.

(Dec 14 '09 at 09:55) Anti Veeranna

Ühinen Anti ja erti seisukohaga, et parim lahendus oleks sobiv vorming valida kohe kuupäeva-kellaja tüüpi välja pärimisel andmebaasist. Kui see miskipärast siiski võimalik ei ole, siis on kõige lihtsam lahendus loobuda juba tekstina antud andmete tagasi ajatüübiks teisendamisest ja teha vajalik teisendus puhtalt tekstitöötlusena:

function prettydate($uglydate) {
    return substr($uglydate, 11, 5) . " " . substr($uglydate, 0, 10);
}
link

vastatud Dec 12 '09 at 22:12

Ahto%20Truu's gravatar image

Ahto Truu ♦♦
6596711

1

Kui piirduda stringitöötlusega, siis ei võeta arvesse ajatsoone. Nt 01.01.2010 01:00+03 = 31.12.2009 23:00+01.

(Dec 14 '09 at 09:27) Tambet Matiisen ♦♦

Üldjuhul küll. Samas, Korxil olemasolevad andmed on ilma vööndiinfota ja sõnetöötlusega lahendust pakkusingi ainult eeldusel, et vormingut serveri poolel muuta ei saa.

(Dec 14 '09 at 21:30) Ahto Truu ♦♦
Sinu vastus
lülita eelvaade

Jälgi seda küsimust

By Email:

Pärast sisselogimist saad tellida muudatuse teavitusi siit

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *kaldkiri* või __kaldkiri__
  • **paks kiri** või __paks kiri__
  • link:[tekst](http://url.com/ "pealkiri")
  • pilt?![alt tekst](/path/img.jpg "pealkiri")
  • nummerdatud nimekiri: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • põhilised HTML märgendid on samuti toetatud

Pinu tööpakkumised

kõik pakkumised »

Küsimuse sildid:

×22
×1
×1
×1

küsitud: Dec 12 '09 at 10:17

nähtud: 2,412 korda

viimati uuendatud: Dec 12 '09 at 22:12

Litsents: Creative Commons Attribution License | Kontakt: info@pinu.ee