This is an old revision of the document!


Data Stellare

Calcolo della “Data Stellare”, usata in “Star Trek”, in ASP - PHP - JavaScript

(Testo tratto da Wikipedia - http://it.wikipedia.org/wiki/Data_stellare)

Nel corso della serie classica di Star Trek (TOS) la data stellare veniva assegnata del tutto casualmente. Solo successivamente, con la serie Star Trek - The Next Generation (TNG) si iniziò ad utilizzare un algoritmo per il calcolo della data stellare: la prima cifra è sempre 4, e la seconda cifra corrisponde al numero della stagione alla quale appartiene l'episodio in questione. Le ultime tre cifre prima del punto vanno da 000 a 999 a seconda del momento della stagione nel quale si trova l'episodio. Le cifre dopo il punto sono completamente casuali.

A causa della mancanza di un metodo ufficiale per calcolare la data stellare in modo matematico (piuttosto che casuale e/o legato ad un episodio) sono stati sviluppati da fan della serie dei metodi alternativi.

(Testo tratto da Wikipedia - http://it.wikipedia.org/wiki/Data_stellare)

I seguenti metodi per calcolare la data stellare, ovviamente non ufficiali, sono fra quelli più utilizzati dalle varie comunità di fan sparse per il mondo. Questi metodi alternativi nascono dal fatto che, a differenza della notazione ufficiale, sono slegati dal concetto di “stagione-puntata” e quindi sono utilizzabili per convertire qualsiasi data standard.

Un'approssimazione di questa formula è stata pubblicata per la prima volta da Wilford Nusser, questo metodo si basa sul principio per il quale 1000 unità di data stellare corrispondono ad un anno standard. Da ciò deriva quindi la formula.

K * SecondiTrascorsi

dove K è il rapporto fra 1000 e i secondi che compongono un anno. È ovvio quindi che la costante sarà diversa a seconda che ci troviamo in un anno bisestile o no.

Il valore si approssima quindi in:

  • K (normale) = 3.170979 x 10-5
  • K (bisestile) = 3.162315 x 10-5

Come si può notare la differenza è incredibilmente piccola. È altrettanto evidente che la formula sopra indicata mal si presta ad un uso istantaneo e può assere meglio esplicitata nella seguente:

Nella quale:

  • Anno è l'anno corrente.
  • AnnoBase è una specie di anno zero. Viene di solito usato l'anno di fondazione della Federazione Unita dei Pianeti; tuttavia alcuni fan usano anche il 2000 come anno base o l'anno della propria nascita, così da risolvere l'inconveniente della data stellare negativa.
  • Giorno è il numero di giorni trascorso dall'inizio dell'anno.
  • GiorniAnno è il numero totale di giorni che compongono l'anno (365 o 366).
  • Ora è l'ora di quando si vuole trovare la data stellare espressa nel formato 24h.
  • Minuti sono i minuti.
  • Secondi sono i secondi, anche se spesso quest'ultima variabile viene del tutto esclusa poiché è di scarsa influenza.
  • K è la costante.

Adesso avendo tutte le informazioni necessarie, creiamo gli script che calcoleranno la data stellare in automatico in modo da utilizzarli in una pagina web di un blog o per far divertire i vostri amici fan di Star Trek.

Data Stellare nei principali linguaggi di programmazione

<%
data = date()
orario = time()
 
anno = year(data)
annoBase = "2323"
giorno = DateDiff("d", "01/01/" & anno, data)
giorniAnno = DateDiff("d", "01/01/" & anno, "01/01/" & anno + 1)
ora = hour(orario)
minuti = minute(orario)
secondi = second(orario)
 
anno_normale = "0,00003170979"
anno_bisestile = "0,00003162315"
 
if giorniAnno = "365" then
     k = anno_normale
elseif giorniAnno = "366" then
     k = anno_bisestile
end if
 
stardate = (((anno - annoBase) + cdbl(giorno / giorniAnno)) * 1000) + (((ora * 3600) + (minuti * 60) + secondi) * k)
 
arr_stardate = split(stardate, ",")
short_stardate = arr_stardate(0) & "." & left(arr_stardate(1), 2)
%>
  • Le righe dalla 2 alla 14 vengono utilizzate per impostare le variabili che useremo nella formula (riga 22).
  • La funzione DateDiff() calcola i giorni passati dall'inizio dell'anno (riga 7) e i giorni che compongono l'anno corrente (riga 8).
  • Un semplice condizionale (riga 16) imposta la costante “k” per utilizzarla in caso l'anno corrente fosse bisestile o no.
  • La riga 22, calcola la data stellare utilizzando la formula descritta sopra, da notare l'uso di cdbl() usato per convertire il risultato della divisione giorno / giorniAnno in un valore “double”.
  • Le righe 24 e 25 non fanno altro che rendere più leggibile la data stellare, riducendo i numeri dopo la virgola a due e mettendo il punto al posto della virgola.

Salviamo il codice della formula, all'interno di un file chiamato stardate.asp e includiamolo all'interno della pagina della nostra applicazione ASP, ad esempio:

<!-- #include file = "stardate.asp" -->
<html>
  <head>
    <title>Data Stellare</title>
  <head>
  <body>
  Oggi è la data stellare <% response.write short_stardate %>
  </body>
</html>
  • programming/stardate.1398720918.txt.gz
  • Last modified: 10 years ago
  • by Giuseppe Di Terlizzi