Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript] Data w stringu
Lewap
post 25.10.2010, 19:49:36
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 6.06.2005

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
Wicepsik
post 25.10.2010, 19:52:00
Post #2





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


parseFloat smile.gif


--------------------
Go to the top of the page
+Quote Post
Lewap
post 25.10.2010, 19:54:42
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 6.06.2005

Ostrzeżenie: (0%)
-----


I bez parseFloat oczywiście winksmiley.jpg
Go to the top of the page
+Quote Post
Crozin
post 25.10.2010, 20:00:35
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Dlaczego nie możesz użyć ani parse*, ani utworzyć obiektu Date?
Go to the top of the page
+Quote Post
Lewap
post 25.10.2010, 20:05:10
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 6.06.2005

Ostrzeżenie: (0%)
-----


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

Ten post edytował Lewap 25.10.2010, 20:07:57
Go to the top of the page
+Quote Post
skowron-line
post 25.10.2010, 20:06:25
Post #6





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


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

Ten post edytował skowron-line 25.10.2010, 20:19:36


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
Crozin
post 25.10.2010, 20:17:35
Post #7





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Lewap
post 25.10.2010, 20:18:10
Post #8





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 6.06.2005

Ostrzeżenie: (0%)
-----


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

Ten post edytował Lewap 25.10.2010, 20:21:33
Go to the top of the page
+Quote Post
skowron-line
post 25.10.2010, 20:23:38
Post #9





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


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.

Ten post edytował skowron-line 25.10.2010, 20:24:07


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
Lewap
post 25.10.2010, 20:28:52
Post #10





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 6.06.2005

Ostrzeżenie: (0%)
-----


Przepraszam, to chyba ja nie odświeżyłem stronki. Twoje rozwiązanie też jest skuteczne, choć to Crozina uderzająco eleganckie smile.gif
Go to the top of the page
+Quote Post
Crozin
post 25.10.2010, 20:30:20
Post #11





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Crozin 25.10.2010, 20:31:00
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 10:01