DanBlog

Il blog di Daniele Armanasco
posts - 47, comments - 79, trackbacks - 1634

[Sfogo] Javascript: oggetto Date

In Javascript basta istanziare un nuovo oggetto Date per ottenere la data corrente:

var myDate = new Date();

A questo punto basta fare:

myDate.getDate(); per avere il giorno (1-31): ma perché non chiamarlo getDay?

myDate.getDay(); per avere il giorno della settimana (0 = domenica, visto che non si lavora, 1 = lunedì, ecc.): ma perchè non chiamarlo getDayOfWeek?

myDate.getMonth(); per avere il numero del mese con, OVVIAMENTE, 0 = gennaio, 1 = febbraio, ecc.

A parte il fatto che usare lo zero per numeri di mese e giorno, che già hanno una loro numerazione, mi sembra “da programmatori mai usciti di casa che non hanno mai visto un calendario”; ma se per il giorno sono partiti da 1, perché per il mese sono partiti da 0? Almeno un pò di coerenza …

Scusate lo sfogo; spero qualcuno mi aiuti a capire (hanno progettato ste cose il giorno di Carnevale?), perché a me sembra proprio “poco pensato” (sono un gentiluomo ;-)).

Print | posted on giovedì 15 ottobre 2009 11.56 |

Feedback

Gravatar

# re: [Sfogo] Javascript: oggetto Date

Alcune delle tue stesse perplessità le ho anch'io, in particolare quella della numerazione zero-based del mese. Purtroppo JavaScript ha ereditato molte convenzioni da Java (in particolare per le date vedi java.sun.com/.../Date.html) che a sua volta le ha prese dal C. In particolare i mesi sono definiti internamente come array e il risultato di getMonth() è semplicemente la restituzione dell'indice (per cui parte da zero anziché da 1)
Diciamo che è stata una scelta che ha facilitato l'implementazione ma poco l'uso :-(
15/10/2009 12.31 | Matteo Casati
Gravatar

# re: [Sfogo] Javascript: oggetto Date

Perche' negli USA la numerazione settimanale comincia da domenica, e non da lunedi' come in Italia ...
Ti basta aprire il calendario di Outlook e averela lingua inglese e i settings di windows su English US ...
Perche' non ne ho idea ma loro usano il calendario cosi' infatti quando mi segno gli appuntamenti o le ferie tiro dentro anche la domenica ogni tanto ...
Riguardo la sintassi ricordati che Javascript nasce nel lontano 1995 e fu il primo OOP per per il web. Siccome il regression test e' fondamentale, non hanno mai cambiato i metodi per non causare problemi ...
Tu nel 1995 cosa facevi? Io ero ancora all' ITIS ...
:-P
15/10/2009 13.29 | raffaeu
Gravatar

# re: [Sfogo] Javascript: oggetto Date

Riguardo ai giorni della settimana mi sta bene lo zero sulla domenica, perchè comunque nella quotidianità non c'è alcuna convenzione al riguardo (il "0 = domenica, visto che non si lavora" voleva essere solo una battuta); proprio per questa mancanza di convenzioni le funzioni di VB per calcolare il numero della settimana dell'anno ti permettono di specificare qual è il giorno iniziale della settimana (anche giovedì se vogliamo!).
Quello invece che mi ha lasciato perplesso è stata la scelta della base zero per i mesi visto che "nel dominio" si contano sempre partendo da uno e nelle date li possiamo indicare con il numero oltre che col loro nome.
Ovviamente ho pensato fosse legato agli indici base zero, ma ho sperato ci fosse un altro motivo visto che:
Quello che ancora più mi ha seccato è stato il fatto che invece i giorni sono a base 1; se proprio hanno scelto di usare la base zero perchè non usarla anche per i giorni? (0-30 invece che 1-31).
Preferisco una scelta sbagliata applicata in modo coerente ad una scelta sbagliata applicata in modo incoerente ...

@raffaeu: Io nel 1995 ero all'università di ing. elettronica e discutevo con i miei compagni che dicevano che Win95 era una schifezza perchè il multithreading era fatto così e cosà, ecc. invece Win3.1 si che era un bel sistema! Io affermavo che avrei usato Win95 solo per il fatto che i nomi dei file non erano più in formato 8.3! A quanto pare mi sono sempre sentito più vicino all'utilizzatore che all'implementatore ...

Grazie per le risposte; ho capito che dovrò "chiudere" un occhio quando mi capiterà la Date sotto mano ;-)
15/10/2009 14.27 | Daniele Armanasco
Gravatar

# re: [Sfogo] Javascript: oggetto Date

Secondo me ditende dalla differenza tra i tipi a cui si riferisce:
Nel primo caso rappresenta l'elemento stesso, negli altri è un indice di un set di elementi (o array se preferisci).
Il giorno del mese è chiaramente uno degli interi [1..31] e quindi mantiene la sua numerazione;
I giorni della settimana, elencati a partire dalla domenica per le ragioni già dette, sono un array o un set o un enum, come preferite, e il numero restituito (essendo un indice) parte da zero "per convenzione".
Stessa cosa per i mesi dell'anno, elencati a partire da gennaio (chissà cosa ne pensano i programmatori dei paesi che usano il calendario lunare cinese...) il cui numero restituito (essendo un indice ) parte da zero "per convenzione".

Quindi secondo me c'è coerenza nell'apparente caos!

Cionondimeno, anch'io sono daccordo con te e se fossi stato io a progettare il tutto li avrei definiti (in C# :-) ) come enum con numerazione a partire da uno!
16/10/2009 8.46 | Nicolò Carandini
Comments have been closed on this topic.

Powered by: