Format date string sintaksa


#1

Koja je po vama najšire prihvaćena sintaksa za format date string.
Recimo ovo je sintaksa koju razumije C# Date clasa: https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings

…no pitam se, ima li neka generalna konvencija oko te “format date string” sintakse?


#2

Generalno ne postoji osim same dokumentacije od Microsofta. Na tebi je izbor kako se odlučiš koji način converta,formatiranja želiš da postigneš što opet zavisi od projekta do projekta koji radiš. Uredu je ako si ti krenuo raditi na nekom projektu i postavio si formate koje ti želiš, međutim ja sam imao xy projekata evo recim konkretno u C#/SQL baziranim aplikacijama gdje sql prima datum u formatu mm/dd/YYYY tako da pri upisu u tabelu moras konvertovat string u taj format nebitno da li preko sql parametara ili obični insert. U suštini od jezika do jezika i isključivo od tebe zavisi šta ćeš primjeniti u biti rezultat je isti…


#3

Da, ali ja želim napraviti normu koju ću sebi nametnuti da je se moram držati CROSS language.
Pa bi se htio držati onog formata koji je najšire prihvaćen i njega dalje nastaviti razvijati.
Jer koliko vidim, sve je to pomalo i zastarjelo. Kada pogledaš, jedan date format string bi trebao podržavati i konvertiranje datuma u ispis:
“7 min ago”
…itd. (Znaš na što mislim …ali ne leži ni u tom grmu problem)

Od konkretnog sam našao nekakvu ISO specifikaciju: https://en.wikipedia.org/wiki/ISO_8601 koja mi se čini da ne gađa srž onoga što treba u programerskom svijetu.

Uglavnom, htio bih normativ za date format string kojeg ću uzeti kao temelj za konstruktor datum layouta unutar različitih programa.
Pošto različiti programi u svojim Date() klasama imaju različitu politiku kako tretiraju date format string, očito ću morati praviti svoje klase konverzije mog normiranog date format stringa u date format string određenog programa.

Tu onda ne želim krenuti iz nule sa svojim date format stringom kojeg ću izvući iz “pete”, nego uzeti neki najšire prihvaćen i njega tretirati kao glavni normativ.

Sada je samo pitanje koju dateFormat sintaksu odabrati kao temelj za početak.

Ova C#-ova koju sam naveo u uvodnom postu izgleda čisto ok: https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings

…al ako ima nešto pametnije od toga, dobro bi bilo znati.


#4

Opiši detaljno boldovano.


#5

Iako mislim da smo se skužili, svejedno da napomenem…

…ja ovdje ne pričam o formatu u kojem će biti datum. Uzmimo da taj format može biti bilo kakav ovisi od metode kakav format očekuje. Tvoj gornji SQL je očekivao format mm/dd/YYYY …

…ono o čem ja pričam je upravo ova sintaksa:

mm/dd/YYYY

Kada ti i ja vidimo tu sintaksu, obojici nam je jasno da se radi o datum formatu:

mjesec/dani/godina

…no kada neki računalni engine vidi tu sintaksu, njemu je ipak netko trebao jasno specifirati da mm znači oznaku za mjesec a ne za minute.

Ova C# sintaksa koju spominjem upravo mm tretira kao minute, dok je oznaka za mjesec => MM.

itd…itd. Ima još puno toga što se skriva u toj sintaksi i za C# se može proučiti u gore datom linku.

Ja sam recimo za JS prije radio sa sintaksom koja je izgledala:

d.m.Y H:i:s.q //za format: 05.02.2019 14:18:00.000

ovo gore isto prepisano u C# dateFormat sintaksu izgleda:

dd.MM.YYYY HH:mm:ss.fff

…i ja tražim normativ za tu sintaksu. Da svaki engine može na isti način shvatiti što mu želi reći “format date string”.


#6

Savršeno sam te razumio šta želiš,lijepa ideja i razmišljanje svakako ali mislim da u ovom trenutku toga nema ili mu se ne posvećuje dovoljno pažnje (Što ne znači da neće biti). Malo si me zainteresovao baš sad, na poslu sam pa sam brzinski pretražio google u suštini ti linkovi koje si ti postavio opisuju dio problema ali nisu rješenje. Ako pronađeš još nešto okači slobodno da prečešljamo :thinking:


#7

Pa neznam, nekako mi se čini da ISO norma iz 1988 godine ne gađa najbolje potrebe weba iz 2020 godine.

Ne kažem da je temelj loš…štoviše, kada se pogleda…sve što je nastalo i što se koristi, nastalo je nad temeljom tog ISO-a.

Ali recimo, C# engine prihvatljivo tretira oznaku “YY” …dok je po tom ISO-u to neprihvaćeno.
U praksi nam je itekako potrebno prikazati datum da odrežemo godinu za prve dvije znamenke…

Ne kažem da je zbog toga taj ISO skroz izvan priče…nikako, on jeste temelj, to je očigledno.
Ali nekako si mislim da su na tom temelju već nastale sintakse koje su opće prihvaćene i koje bi se mogle uzeti kao sljedeća “početna” točka.

Jer ako uzmem taj ISO kao početnu točku, onda sam od samog korijena (koji jeste zdrav) u svom “branchu”. Što isto možda nije loš pristup…


#8

A zasto bi to isao raditi?

Imas funkciju za konverziju i to ti je dovoljno u svakom jeziku.

Da ce biti prihvacen samo jedan format datuma na svijetu, zaboravi.

Gubis vrijeme na nepotrebne stvari.


#9

Želim da sve komponente koje će raditi sa datumom unutar normJS standarda slušaju/razumiju isti datum-format-string.

Gubis vrijeme na nepotrebne stvari.

  1. Za to trebam samo odabrati najrazvijeniji i najpraktičniji datum-format-string koji se već koristi.
  2. Nikada nije gubljenje vremena raditi ono što voliš :stuck_out_tongue:

Jasno. Ali kao što rekoh, nebitan mi je ostatak svijeta. Normaliziram sebe i svoju okolinu.


#10

Jadan onaj koji dodje poslije tebe raditi na projekt na kojem si ti radio.

Mi u firmi imamo jednog filozofa, ali tebi nije ni do koljena.

On topic: Datum format string je ovisan i o definiranoj lokalizaciji na sistemu i u programskom kodu. Svaki programski jezik ima svoj dwfinirani nacin na koji handluje parsiranje i formatiranje datuma. Unifikaciju toka moze postici jednostavnim trikom, a to je da datume spremas u bazu u timestamp formatu, nakon toga ih obradjujes, formatiras i prikazujes kako hoces. To je sva mudrost i filozofija oko Date stringa.

Metoda koja ti pri tome moze pomoci je https://docs.microsoft.com/en-us/dotnet/api/system.datetimeoffset.tounixtimeseconds?view=netframework-4.7.2

I jos jedan savjet za kraj kojeg ti ponavljam zadnjih X godina, kani se prilagodjavanja svega prema tebi i pocni se prilagodjavati tome u cemu radis, ne samo da ces olaksati sebi, nego ces olaksati i drugima s kojima radis, a i koji ce doci poslije tebe. Ja da dodjem u firm s tobom raditi i da vidim to sto radis stero bi i tebe i sefa i firmu i posao i programiranje u ■■■■■. :slight_smile:


#11

Teško je znati šta ti radiš.
Ono što je izvjesno je da nikad ne ubodeš prvi post teme.
Tj. ono što piše u otvarajućem postu teme nema veze s onim što tebe muči.

Koji su limiti moment.js biblioteke koji te muče da bi ih volio proširiti?


#12

Ne pričam uopće o tome u kojem formatu će se držati datum.
Što se toga tiče, timestamp je jasno jednostavan i dobar odabir.

Ne tražim biblioteku. Možda da ipak pročitaš još jednom uvodni post?
Tražim najzastupljeniji date-format-string …i ako je ovaj koji koristi moment.js najzastupljeniji, to je onda ono što se traži.

No primjeti, ono što moment.js izražava kao:

h:mm:ss

To isto C# engine izražava kao:

HH:mm:ss

Koje ćemo uzeti kao raširenije i bolje definirano?

O tome je riječ. Tražim tko je najkvalitetnije razradio tu sintaksu za formatiranje datuma. :wink:


#13

Hups, bolje pogledah. Ovo za h / HH ipak imaju jednako…ali nevezano za to, date-format-string sintaksa im se ipak ne poklapa. Tj. moment.js gura poprilično proširenu tu sintaksu spram C#-a.

Kako su se samo usudili proširavati, sram ih ima biti. xd


#14

Nema potrebe.

Ti bi zajedničku sintaksu za sve i jedan programski jezik.
Ili da racionalizujem rečeno: ti bi da postoji jedan programski jezik.

Good luck.


#15

Da li je stvarno problem koristiti date format sintaksu koju namece sam programski jezik/biliblioteka ? :smiley:

Uzmimo u obzir i da ti odradis sve to sto si zamislio tj. dodjes do jednog formata - koji je benefit svega toga ?


#16

Zašto se zaustavljati na mijenjanju jezika.
Prvi nek’ se baci kamenom ko nije za mijenjanje sintakse i DB engine-a.


#17

Je, jer ako pravim specifikaciju za određenu komponentu koja će se primjenjivati unutar različitih projekata i koja je “standalone” …kako ću odabrati date-format-string koji ta komponenta treba razumjeti?

Što nije logično odabrati ono što je već najprihvaćenije?

Kako ja ne znam što je najprihvaćenije, pitam glas naroda ili ti foruma.
Simple as that.


#18

Ako ti pises komponentu za JS, onda ces uzet date format sintaksu koju taj jezik nudi, a ne pokusati imporatiti stvari iz C# ili ne znam ti cega vec.

Problem solved ? :smiley:


#19

Nije to rješenje,ne razumiješ uopšte ako čovjek pravi “standalone” komponentu znači neće pravit komponentu jednu za C#,jednu za JS,python i šta ti ja znam. Naravno,nikad neće uspjet pokrit veliku većinu jezika,al traži koncept tj. opće prihvaćenu sintaksu dateformata po nekom standardu koja je usvojena u svijetu i najzastupljenija je. Kad nađe rješenje za to onda je problem solved :smile:


#20

Kad središ ovu problematiku, onda se prebaci na rješavanje razgovornog jezika. Nađeš standardne nazive i cijeli svijet priča unificirano normLG.