Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

FileTime i vremenske zone

[es] :: Pascal / Delphi / Kylix :: FileTime i vremenske zone

[ Pregleda: 2055 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

((BugA))
Igor Djordjevic
Bor, Srbija

Član broj: 29241
Poruke: 196
*.dynamic.isp.telekom.rs.

ICQ: 66516695
Sajt: www.MalamutKlub.com


+17 Profil

icon FileTime i vremenske zone13.09.2011. u 19:24 - pre 153 meseci
Sustina problema je sledeca - potrebno mi je da znam kad je Pera Peric (iz Afrike, Rusije, Amerike) kreirao (tj. modifikovao) odredjeni fajl.

Bez problema mogu ocitati "last modified" vreme fajla (u UTC) i po potrebi ga konvertovati u svoju vremensku zonu, ali meni treba to vreme konvertovano u vremensku zonu onoga ko je fajl kreirao (tj. poslednji modifikovao).

Npr, ako Pera sad modifikuje fajl (kod mene 20:13, po GMT/UTC to je 18:13) a kod njega je recimo 15:13, da kad on meni posalje taj fajl ja mogu nekako da vidim da je fajl modifikovan u 15:13 po lokalnom vremenu, a ne u 20:13, kako ce meni Windows da pokaze (ili 18:13, ako ocitam UTC). Potrebno je napomenuti da ja ne znam koja je Perina vremenska zona... (inace bi resenje bilo lako, ne? ;)

Pre no sto se bacim na neka alternativna resenja, htedoh da pitam da li je ikako moguce iscupati (citaj: iz fajla ocitati) datum/vreme modifikacije, ali prevedeno u lokano vreme onoga koji je fajl modifikovao? Da li u fajlu igde postoji informacija o vremenskoj zoni onoga koji je fajl kreirao? Pretpostavljam da ne, ali ko pita - ne skita ;)

Pravim neki program za automatsko preimenovanje fajlova, a izmedju ostalog potrebno je da moze da u naziv fajla umetne datum kada je fajl poslednji put modifikovan (po lokalnom vremenu onoga koji ga je modifikovao, kako bi se videlo da li je taj sto ga je modifikovao to radio ujutru, uvece, kad vec).

Ako nista drugo, upisacu UTC vreme, uz napomenu da je to UTC (GMT) vreme :)

p.s. I pitanju je NTFS fajl sistem.

[Ovu poruku je menjao ((BugA)) dana 13.09.2011. u 20:37 GMT+1]
 
Odgovor na temu

salaczr

Član broj: 160654
Poruke: 103
*.dynamic.isp.telekom.rs.



+5 Profil

icon Re: FileTime i vremenske zone14.09.2011. u 12:40 - pre 153 meseci
Evo odgovora

http://en.wikipedia.org/wiki/NTFS#Universal_time

poz
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: FileTime i vremenske zone14.09.2011. u 13:16 - pre 153 meseci
> Bez problema mogu ocitati "last modified" vreme fajla (u UTC) i po potrebi ga konvertovati u svoju vremensku zonu, ali meni treba to vreme konvertovano
> u vremensku zonu onoga ko je fajl kreirao (tj. poslednji modifikovao).

> Npr, ako Pera sad modifikuje fajl (kod mene 20:13, po GMT/UTC to je 18:13) a kod njega je recimo 15:13, da kad on meni posalje taj fajl ja mogu nekako
> da vidim da je fajl modifikovan u 15:13 po lokalnom vremenu, a ne u 20:13, kako ce meni Windows da pokaze (ili 18:13, ako ocitam UTC). Potrebno je napomenuti da
> ja ne znam koja je Perina vremenska zona... (inace bi resenje bilo lako, ne? ;)

Timestampovi se čuvaju u FILETIME strukturi koja je u UTC (GMT) zoni, ta struktura nema informaciju o lokalnoj vremenskoj zoni. To znači da nije moguće konvertovati fajl iz UTC u lokalno vreme ako ne znaš lokalnu zonu. Pokušaj da prilikom preuzimanja fajlova saznaš lokalnu vremensku zonu pošiljaoca.
 
Odgovor na temu

((BugA))
Igor Djordjevic
Bor, Srbija

Član broj: 29241
Poruke: 196
*.ptt.rs.

ICQ: 66516695
Sajt: www.MalamutKlub.com


+17 Profil

icon Re: FileTime i vremenske zone14.09.2011. u 13:17 - pre 153 meseci
Hvala salaczr, ali ja to sve znam, zato sam i napisao da je u pitanju NTFS sistem =)

FAT cuva timestamp fajlova kao "hardcoded local time" - boli ga uvo za UCT, fajl koji je u Beogradu modifikovan u 15:00h bice prikazan kao modifikovan u isto to vreme i u Americi. NTFS cuva timestamp u UTC formatu, a po potrebi ga racuna i prikazuje u local time formatu (shodno podesavanjima kompjutera na kome se fajl nalazi), pa ce tako fajl modifikovan u 15:00h na kompjuteru u Beogradu (UTC +1), na nekom kompjuteru u Americi (npr. UTC -5) biti prikazan kao modifikovan u 09:00h...

Sve je to u redu, mene samo zanima da li je ikako moguce da saznamo lokalno vreme modifikacije fajla na NTFS sistemu, ako ne znamo u kojoj je vremenskoj zoni fajl modifikovan? Da znamo zonu sve bi bilo lako, UTC (koji je sacuvan u fajlu) +/- vremenska zona gde je modifikacija nastala, i to je to, ali sta kad ne znamo zonu, a treba nam originalno lokalno vreme modifikacije fajla (a ne ono sto nam NTFS racuna, shodno nasem lokalnom vremenu)?

EDIT: savkic, hvala, znaci ne moze, kako sam i mislio... mada sam se potajno nadao da moze =) Steta... Ne postoji mogucnost da saznam vremensku zonu onoga ko je fajl kreirao/modifikovao. Nista, parola snadji se, videcu sta se da uciniti =)
 
Odgovor na temu

salaczr

Član broj: 160654
Poruke: 103
*.dynamic.isp.telekom.rs.



+5 Profil

icon Re: FileTime i vremenske zone14.09.2011. u 14:39 - pre 153 meseci
Mozda da napravis neki klijentski program preko koga bi korisnici upload-ovali svoje fajlove.
Na taj nacin mozes da radis sta god hoces.

poz
 
Odgovor na temu

((BugA))
Igor Djordjevic
Bor, Srbija

Član broj: 29241
Poruke: 196
*.dynamic.isp.telekom.rs.

ICQ: 66516695
Sajt: www.MalamutKlub.com


+17 Profil

icon Re: FileTime i vremenske zone14.09.2011. u 20:22 - pre 153 meseci
^^ salaczr, jos jednom hvala na pokusaju da mi pomognes, ali ne moze ni tako :)

U pitanju su snimljene partije (prikaz kako je neko igrao) za igru Age of Empires II. Fajlovi se nalaze svuda po netu i kaci ih ko kako i kad stigne. Ja pravim neki program koji (izmedju ostalog) moze i da preimenuje fajlove tako sto cita podatke iz samog fajla (hex - imena igraca, ime mape, itd.), cime ime fajla dobija na znacaju jer mozes odmah da vidis o cemu se radi, umesto da fajl dobije genericko ime.

E sad, postoji mogucnost da, ako fajl nije vec preimenovan, iskoristim genericko ime koje je u formatu "recorded game - 17-Aug-2010 17`06`02.mgx", da iz njega izvucem ovaj datum i vreme (to je local time vreme kad je partija pocela). Problem mi samo pravi ovaj naziv meseca, jer se on razlikuje od jezika do jezika, pa tako recimo spanska verzija igre pravi fajl pod nazivom "partida grabada - 08-dic-2009 07`37`05.mgx" (ovo "dic" je valjda decembar :D), a ne postoji mogucnost da saznam bas sve moguce nazive meseca na svim jezicima koji su u opticaju.

Mogu ja da nesto iskombinujem pa da samo mesec citam iz FileTime-a, a sve ostalo iz ovog naziva, medjutim tu moze (i verovatno hoce) nastati problem kod poslednjeg/prvog dana u mesecu. Ako se desi da u nazivu fajla pise npr. 01. apr 01`05`38 (sto je lokalno vreme), ako je vremenska zona npr. UTC +2, kad procitam FileTime meni ce pisati da je datum 31. mart (vreme 23`05`38), pa ako uzmem samo mesec sve zajedno ce da da 01. mart 01`05`38, sto je prilicna omaska...

... nego sad dok ovo pisem, shvatam da u stvari i nije problem :)) Mogu da procitam dan iz imena fajla i iz FileTime, da to uporedim (da li je local time jos uvek prethodni mesec u odnosu na UTC, ili je mozda vec naredni), pa da to iskoristim za odredjivanje tacnog meseca (eventualno i godine ako je mesec decembar/januar). Eto, moci ce tako :)

Jos jedino ostaje problem ako je fajl vec preimenovan (u npr. "moja partija.mgx"), tu onda mogu samo da procitam UTC iz FileTime, ali sta je tu je, bolje ista nego nista.

Hvala obojici jos jednom, nije ovo oko datuma neka silna muka, nego mi je samo kao problem delovalo interesantno i zaintrigiralo me da pokusam da nadjem sto bolje resenje da postignem ono sto zelim, sto je po meni i najveca draz programiranja ;)

p.s. Ako neko bude imao neku bolju ideju za resenje, slobodno kazite :)
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: FileTime i vremenske zone

[ Pregleda: 2055 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.