Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Data w stringu
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Lewap
Mam stringa datopodobnego "2011-12-07" i chciałbym wyciągnąć z niego 2011 i zwiększyć to o 1. Bardzo zależy mi na skrypcie, w którym nie występują żadne deklaracje zmiennych (nie chcę używać konwersji tego stringa do obiektu Date), właściwie to chodzi mi o to, żeby to było pojedyncze polecenie. Zauważyłem, że dobrze działa coś takiego:

Kod
parseInt("2011-12-07".substring(0,4))+1;


ale z pewnych względów nie mogę użyć funkcji parseInt. Czy możecie podpowiedzieć mi jakiś sposób zrobienia tego samego, co powyższy kod bez użycia parseInt, dodatkowych zmiennych i konwersji do Date?
Wicepsik
parseFloat smile.gif
Lewap
I bez parseFloat oczywiście winksmiley.jpg
Crozin
Dlaczego nie możesz użyć ani parse*, ani utworzyć obiektu Date?
Lewap
Crozin, odpowiedź na Twoje pytanie nie zmieni faktu, że interesuje mnie tylko rozwiązanie niekorzystające z tego co napisałem. Może żeby nie brnąć w niepotrzebną polemikę, załóżmy na potrzeby wątku, że mam wrednego wykładowcę JavaScriptu, który zabrania mi używać tych funkcjonalności smile.gif
skowron-line
Cytat(Lewap @ 25.10.2010, 19:54:42 ) *
I bez parseFloat oczywiście winksmiley.jpg

http://jsfiddle.net/z48eX/ proszę bez parseInt i parseFloat, są inne sposoby aby sprowadzić stringa do inta smile.gif


Edit: zły link.

Edit:
Cytat
załóżmy na potrzeby wątku, że mam wrednego wykładowcę JavaScriptu, który zabrania mi używać tych funkcjonalności

q*#@! debil
Crozin
JavaScript może w tle konwertować typy zmiennych, więc:
[JAVASCRIPT] pobierz, plaintext
  1. "2011-02-02".substring(0, 4) - -1
[JAVASCRIPT] pobierz, plaintext
Konieczne było odjęcie -1, ponieważ operator "+" jest przeciążony dla typu String.
Lewap
skowron-line, czy pod wskazanym linkiem miałem znaleźć kod:

Kod
document.getElementById('a').innerHTML = Math.round(parseInt("2011-12-07".substring(0,4)))+1;


bo taki tam i był i jak na moje oko, to korzysta z parseInt...

[edit] Crozin, wielkie dzięki, wygląda sensownie smile.gif Jutro będę wiedział na pewno i wtedy albo zgłoszę się ponownie, albo podziękuję jeszcze raz smile.gif
skowron-line
Cytat(Lewap @ 25.10.2010, 20:18:10 ) *
skowron-line, czy pod wskazanym linkiem miałem znaleźć kod:

Kod
document.getElementById('a').innerHTML = Math.round(parseInt("2011-12-07".substring(0,4)))+1;


bo taki tam i był i jak na moje oko, to korzysta z parseInt...


Oczywiście że nie, poprawiłem link w poście, przez nieuwagę tam zostało parseInt.
Lewap
Przepraszam, to chyba ja nie odświeżyłem stronki. Twoje rozwiązanie też jest skuteczne, choć to Crozina uderzająco eleganckie smile.gif
Crozin
Z racji na to, że wątek zboczył na temat, jak zamienić (string) "123" na (int/float) 123:
Kod
> "123"
"123"
> "123" - 0
123
> "123" * 1
123
> Math.round("123")
123
> - -"123"
123
Takich sposobów jest jeszcze cała masa - wszystkie wykorzystują fakt, że JS jest językiem dynamicznie typowanym i konwersja String -> Integer może zachodzić w tle.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.