Úprava datumu - doplnění nul – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Úprava datumu - doplnění nul – JavaScript, AJAX, jQuery – Fórum – Programujte.comÚprava datumu - doplnění nul – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

Gereth
~ Anonymní uživatel
3 příspěvky
9. 5. 2017   #1
-
0
-

Ahoj všichni,

snažím se marně pátrat po řešení, jak udělat v jquery úpravu datumu.

Mám například datum 1.2.1980 a potřeboval bych za den a měsíc doplnit 01.02.1980.

Mohl by mi někdo poradit, případně podle čeho hledat? Děkuji všem za případnou pomoc!

Nahlásit jako SPAM
IP: 160.218.105.–
chita0
Newbie
9. 5. 2017   #2
-
0
-

#1 Gereth 

var datum = '1.1.1980';

datum = datum.split('.').map(function(x) {
   return (x.length < 2) ? '0'+x : x;
}).join('.');
Nahlásit jako SPAM
IP: 77.104.198.–
peter
~ Anonymní uživatel
3619 příspěvků
9. 5. 2017   #3
-
0
-

//1.2.1980 ... 01.02.1980.
str = '1.2.1980';
str = str.replace(/(^()(\d\.))|((\.)(\d\.))/g,"$2\0$3");
Netestovano.
Najdi zacatek+()+(cislo+tecka) nebo (tecka)+(cislo+tecka).
Nahrad zavorku $2 za $2, nulu 0 a zavorku $3 za $3.
5.cokoliv nahradi za 05.colkoliv
cokoliv.5.cokoliv nahradi za cokoliv.05.cokoliv
$2\0$3 - to lomitko tam musi byt, jinak by to povazoval za zavorku $20 a ne $2.

Nahlásit jako SPAM
IP: 2001:718:2601:26c:f534:36...–
weroro0
Návštěvník
9. 5. 2017   #4
-
0
-

Nejak takto.

var datum = '1.2.1980';
datum = datum.replace(/\b(\d{1})\b/g, '0$1'); //01.02.1980
Nahlásit jako SPAM
IP: 91.235.54.–
Front-end senior web developer at Azet, a.s. & Ringier Axel Springer Slovakia.
JavaScript (ECMA5, ECMA6+), TypeScript, HTML, CSS specialist
MilanL+1
Expert
10. 5. 2017   #5
-
0
-

#1 Gereth
Nebo třeba toto 
http://stackoverflow.com/…e-formatting.

// funkce
$.date = function(dateObject) {
    var d = new Date(dateObject);
    var day = d.getDate();
    var month = d.getMonth() + 1;
    var year = d.getFullYear();
    if (day < 10) {
        day = "0" + day;
    }
    if (month < 10) {
        month = "0" + month;
    }
    var date = day + "/" + month + "/" + year;

    return date;
};

// a použití
$.date(yourDateObject);
Nahlásit jako SPAM
IP: 91.139.9.–
weroro0
Návštěvník
10. 5. 2017   #6
-
0
-

#5 MilanL
Ešte si zabudol dodať, že:

  1.  je to pomalé
  2. má to závislosť na jQ
  3. musí sa sťahovať zbytočných 80KB

Nahlásit jako SPAM
IP: 91.235.54.–
Front-end senior web developer at Azet, a.s. & Ringier Axel Springer Slovakia.
JavaScript (ECMA5, ECMA6+), TypeScript, HTML, CSS specialist
MilanL+1
Expert
10. 5. 2017   #7
-
0
-

 

#6 weroro

jQ není až tak zbytečné, navíc psal že ho používá, při dnešních výkonech a rychlostech stažení nějakých 80k nehraje roli a na to co všechno to umí to až tak pomalé není.

Samozřejmě, že by bylo jednodušší, kdyby měli lepší obsluhu formátování DATA,

např. v Delphi je to rozlišené:
- d/m/yyyy = zobrazí pouze platné číslice => 1/2/2017
- dd/mm/yyyy = zobrazí čísla 2 místně tzn u kratších doplní 0 => 01/02/2017

Nahlásit jako SPAM
IP: 91.139.9.–
weroro0
Návštěvník
10. 5. 2017   #8
-
0
-

#7 MilanL
Veľmi sa ti ospravedlňujem. Skutočnosť, že jQ používa, som prehliadol. Na druhú stranu v tomto prípade je použitie jQ aj tak zbytočné.

Nahlásit jako SPAM
IP: 91.235.54.–
Front-end senior web developer at Azet, a.s. & Ringier Axel Springer Slovakia.
JavaScript (ECMA5, ECMA6+), TypeScript, HTML, CSS specialist
MilanL+1
Expert
10. 5. 2017   #9
-
0
-

#8 weroro
hm to tvoje řešení je možná elegantnější.

No já v těch regulérních výrazech drobátko plavu. Umí toho sice hodně, ale špatně se v nich orientuji, jak je to nepřehlednej galimatiáš lomítek, různých závorek a znaků, a blbě se mi v tom pak hledají chyby.

Nahlásit jako SPAM
IP: 91.139.9.–
peter
~ Anonymní uživatel
3619 příspěvků
11. 5. 2017   #10
-
0
-

MilanL - Hele, regularni vyrazy jsou jednoduche, kdyz pochopis, jak to funguje. On proste hleda zadanou kombinaci pismen nebo skupiny znaku. Ty si ozavorkujes a nahradis celou skupinu za jinou nebo obsahem nalezene kombinace.
ahoj - hleda skupinu znaku 'ahoj'
[ahoj] - hleda 1 znak, ktery je z mnoziny znaku, a nebo h nebo o nebo j
a??? - hleda 1 znaky, kde prvni je a a dalsi 4 jsou jakekoliv (ahoj, auto, a123, a!?*, ...)
a.{3} - totez, . je jakykoliv znak, 3 je min pocet
a.{3,3} - totez min 3 max 3
[a][h][o][j] - hleda slovo ahoj, viz prvni radek
atd...
Pak jsou tam ruzne predpisy se zavorkovanim, pred zavorkou, za zavorkou, opakovani znaku nebo cele zavorky nekolikrat a pod.
Da se to pouzit, kdyz chces z tel. cisla smazat vsechny znaky, ktere nejsou cislo (jakoze nekdo dava na zacatek #, doprostred mezery, minuska, lomitka, ale do db chces dostat jen cislo bez tech znaku) a ruzne korekce textu od uzivatele.

Nahlásit jako SPAM
IP: 2001:718:2601:26c:51a1:40...–
peter
~ Anonymní uživatel
3619 příspěvků
11. 5. 2017   #11
-
0
-

Treba jako, kdy se to moc nehodi, je prave kontrola datumu. Datum totiz ma kazdy mesic jiny pocet dnu. A pres 4 roky se meni prestupny rok. A ten navic ne vzdy je pres 4 roky. Nebo, kdybys chtel zjistovat velikonocni pondeli, tak to se kazdy rok meni datum. Proste bys musel udelat dost pracny reg. vyraz. A to je jednodussi jit pres vypocty. Nebo pouzit pribliznou shodu,

\d\d?\.\d\d?\.\d\d(\d\d)?
\d cislo
\d? cislo nebo nic
\d\d? - cili to je 1 nebo 2 cislice
\. tecka (protoze obyc tecka ma pro reg vyznam, tak se musi komentovat lomitkem)
\d\d(\d\d)? - 2 nebo 4 cislice (pro rom, 17 nebo 2017)

ale uz nekontrolujes, jestli nezada clovek nesmyslne datum, treba 99.99.9999

Nahlásit jako SPAM
IP: 2001:718:2601:26c:51a1:40...–
MilanL+1
Expert
11. 5. 2017   #12
-
0
-

#11 peter
no já jsem ten výraz ve #4 "datum.replace(/\b(\d{1})\b/g, '0$1');"

pochopil takhle:

 (\d{1}) = najdi číslici, která je sama
/g = je opakování - použití na všechny nalezené
'0$1' = vlož před nalezený výraz, dle pořadí hledaných výrazů - toto se vztahuje ke string.replace

ale nevím co dělá to ohraničení \b - že by volitelná tečka před nebo za tou číslicí :)

Vím, že se Reg.výrazy používají hojně třeba při kontrole formulářů nebo parsování dokumentů.
Budu si to muset nastudovat jen najít nějaký hezký stránky s komplexním popisem. Ty výrazy na které občas narážím jsou někdy děsně složité, na druhou stranu pokud to prostředí dovoluje použít, šetří to práci s kodováním vlastních funkcí.

Nahlásit jako SPAM
IP: 91.139.9.–
MilanL+1
Expert
11. 5. 2017   #13
-
0
-

#12 MilanL
Tak jsem si to nakonec našel \b - je slovo tzn v tom výrazu se hledá slovo složené z 1 číslice to by, ale znamenalo, že by to ve stringu detekovalo kdekoliv samostatnou číslici ohraničenou znaky mezera, tečka, čárka, ?, !, případně + - : * ?

Nahlásit jako SPAM
IP: 91.139.9.–
peter
~ Anonymní uživatel
3619 příspěvků
11. 5. 2017   #14
-
0
-

Presne tak. A nejspis i ohranicene cimkoliv jinym. Ale pro to datum to staci. 1, ze to hleda 1, cili dve to bude ignorovat. Casove rychlejsi by mohlo byt to reseni s map + callback funkce (treba pro 1000 opakovani). Ikdyz, kdo vi, reg. vyrazy se ted dost optimalizuji.

Nahlásit jako SPAM
IP: 2001:718:2601:26c:51a1:40...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 7 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032020 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý