• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Formatowanie daty w js

VPS Starter Arubacloud
0 głosów
370 wizyt
pytanie zadane 21 maja 2017 w JavaScript przez balti Obywatel (1,040 p.)
Witam chciałem zrobić takie coś gdzie jeżeli mam wpis na stronie np 10 marc to zamieni mi to na 2 months ago. Niestety funkcja z której korzystam nei działa mi. Natomiast u znajomego na linuxie wszystko ładnie chodzi. Czy ma ktoś z was jakiś pomysł co jest nie tak?

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <title>Pushy - Off-Canvas Navigation Menu Demo</title>
        <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
        <script src="czasy.js"></script>
        <link rel="stylesheet" href="css/normalize.css">
        <script type="text/javascript">
        $(document).ready(function()
        {
            var x=$("time:not(.formatted)");
            $.each(x,function(k,v)
            {
                var y = $(v);
                var d = new Date(y.html());
                console.log(d.toISOString());

                var z = d.toISOString().match(/(\d{1,4}-\d{2}-\d{2}).*?(\d{2}:\d{2})/);
                -->/(\d{1,4}-\d{2}-\d{2})T(\d{Z}:\d{2})/

                console.log(z);
                y.attr("datetime", z[0] + " " + z[1]);
                y.html(time_ago(y.html()));
                y.addClass("formatted");
            });	
        });
            
        </script>
    </head>
    <body>
        <div class="row">
            <div class="col-sm-12 col-md-8">
				<main role="main">	
				   <hgroup role=”heading”>
				   <h1>LOREM</h1>
				   <h3>LOREM IPSUM</h3>
				   </hgroup>
				   <article role="article">
						<header>
							<h2>1.Sed nec ante</h2>
							<p>Autor: Gosc1 | <time>10 marca, 2017 10:15:30 </time>
						</header>
						<section>
							<div class="textmain">
								Sed nec ante dictum, pretium arcu vitae, dapibus mi. Duis posuere pharetra ex. Donec id nibh ligula. Fusce at risus hendrerit, dapibus felis at, auctor dolor. Mauris non odio cursus, ultrices felis feugiat, mollis justo. Nunc bibendum iaculis metus, ullamcorper bibendum libero dictum laoreet. Curabitur non nisi urna. Suspendisse nec porttitor eros. Duis condimentum arcu ut rhoncus elementum. Phasellus convallis felis ultrices vulputate pellentesque. Aliquam tincidunt et sem vel semper. Aliquam erat volutpat. Etiam a bibendum lectus. Nulla tempus tristique imperdiet. Aenean sit amet fermentum ligula, convallis vehicula nulla.
							</div>
						
						</section>	
				   </article>
                </main>
            </div>
            </div>
    </body>
</html>
function time_ago(time){

switch (typeof time) {
    case 'number': break;
    case 'string': time = +new Date(time); break;
    case 'object': if (time.constructor === Date) time = time.getTime(); break;
    default: time = +new Date();
}
var time_formats = [
    [60, 'seconds', 1], // 60
    [120, '1 minute ago', '1 minute from now'], // 60*2
    [3600, 'minutes', 60], // 60*60, 60
    [7200, '1 hour ago', '1 hour from now'], // 60*60*2
    [86400, 'hours', 3600], // 60*60*24, 60*60
    [172800, 'Yesterday', 'Tomorrow'], // 60*60*24*2
    [604800, 'days', 86400], // 60*60*24*7, 60*60*24
    [1209600, 'Last week', 'Next week'], // 60*60*24*7*4*2
    [2419200, 'weeks', 604800], // 60*60*24*7*4, 60*60*24*7
    [4838400, 'Last month', 'Next month'], // 60*60*24*7*4*2
    [29030400, 'months', 2419200], // 60*60*24*7*4*12, 60*60*24*7*4
    [58060800, 'Last year', 'Next year'], // 60*60*24*7*4*12*2
    [2903040000, 'years', 29030400], // 60*60*24*7*4*12*100, 60*60*24*7*4*12
    [5806080000, 'Last century', 'Next century'], // 60*60*24*7*4*12*100*2
    [58060800000, 'centuries', 2903040000] // 60*60*24*7*4*12*100*20, 60*60*24*7*4*12*100
];
var seconds = (+new Date() - time) / 1000,
    token = 'ago', list_choice = 1;

if (seconds == 0) {
    return 'Just now'
}
if (seconds < 0) {
    seconds = Math.abs(seconds);
    token = 'from now';
    list_choice = 2;
}
var i = 0, format;
while (format = time_formats[i++])
    if (seconds < format[0]) {
        if (typeof format[2] == 'string')
            return format[list_choice];
        else
            return Math.floor(seconds / format[2]) + ' ' + format[1] + ' ' + token;
    }
    
return time;

}

 

2
komentarz 21 maja 2017 przez Fenix Nałogowiec (26,750 p.)

Generalnie, do rzeczy związanych z czasem użyłbym liba, np MomentJs . Prosto i przyjemnie.

komentarz 21 maja 2017 przez balti Obywatel (1,040 p.)
Chciałem jednak zrobić tak by to zadziałało ale siedzę i siedzę i coś nie idzie. Może ktoś inny ma jakiś pomysł, jak powinienem to przerobić, by działało?

1 odpowiedź

0 głosów
odpowiedź 22 maja 2017 przez Lu Kiss Dyskutant (7,600 p.)
w php łatwiej chyba byłoby ustawić formatowanie i18n ale dla js znalazłem coś podobnego

https://github.com/fnando/i18n-js

Podobne pytania

0 głosów
2 odpowiedzi 227 wizyt
pytanie zadane 26 stycznia 2017 w JavaScript przez Alterwar Dyskutant (7,650 p.)
0 głosów
2 odpowiedzi 238 wizyt
pytanie zadane 5 września 2018 w JavaScript przez Bakr Mądrala (6,850 p.)
0 głosów
1 odpowiedź 88 wizyt
pytanie zadane 13 stycznia 2019 w C i C++ przez moriarty22 Nowicjusz (140 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...