2012-11-05 6 views
5

voglio usare shell per ottenere il tempo all'epoca e poi usare javascript in una pagina html per ottenere un altro tempo epoca e quindi ottenere la differenza tra loro ma ho paura che il tempo dell'epoca potrebbe non essere sincronizzato tra i diversi script quindi questa differenza è inutileè tempo di epoca lo stesso sulla stessa macchina con gli script diffent/programmi

quindi voglio sapere, se allo stesso tempo, io uso guscio e javascript per ottenere epoca tiem sarà il risultato essere lo stesso o no? se no, quanto è grande la differenza?

grazie!

+0

Immagino che saranno uguali, ma non ci si può fidare perché i browser possono fare cose strane o l'utente può modificare alcune impostazioni o qualcosa del genere. Sarebbe molto meglio se tu usassi solo un server per ottenere il tuo tempo d'epoca. –

+0

Voglio dire se il javascript viene eseguito sulla stessa macchina dello script della shell, saranno gli stessi – user1769686

+0

So cosa intendevi. Tutto quello che sto dicendo è che queste cose non sono sempre completamente affidabili poiché non tutti seguono le specifiche. Per lo più, dovrebbero essere uguali, sì. –

risposta

1

Se si intende il numero di secondi dall'epoca Unix (1970-01-01T00: 00: 00Z), è regolato da questa stessa definizione. Le uniche differenze che dovresti essere in grado di vedere sono causate da:

  • diversi tempi di chiamata di sistema che lo restituisce *);
  • orologi non sincronizzati su sistemi diversi.

ed eventualmente anche:

  • orologi non sincronizzati su diversi processori core/processori fisici;
  • gestione dipendente dell'implementazione della funzione che restituisce l'ora corrente (ad esempio, l'implementazione del motore JS potrebbe memorizzare il valore in cache per un breve periodo in quanto non si deve eseguire l'attuale syscall, anche se dubito di ciò).

A seconda della risoluzione temporale necessaria, alcuni di questi non sono un problema. La mia ipotesi è che, se non hai bisogno di granularità più fine di 1s, dovresti essere più che fine (sulla stessa macchina).

*) inoltre, sul sistema single core, non è possibile ottenere lo stesso tempo (almeno con la risoluzione ns) da diverse syscalls, a meno che il kernel non lo memorizzi, semplicemente perché devono succedere uno dopo l'altro un altro.

+0

Oh, la teoria è un po 'profonda, quindi se uso shell script e javascript sulla stessa macchina, spero che la precisione della granularità sia al livello di 0,2 secondi o inferiore, è possibile o no? – user1769686

+0

@ user1769686 Mi aspetterei così (in realtà credo che dovrebbe essere più sulla scala ms). Tuttavia, tieni presente che di tanto in tanto puoi vedere facilmente ritardi più grandi a causa di un carico maggiore sul computer, specialmente nel browser che mostra la pagina. – peterph

0

Secondo ECMA-262 section 15.9.1.1:

tempo è misurato in ECMAScript in millisecondi dal 1 Gennaio 1970 UTC. Nei valori temporali i secondi trascorsi vengono ignorati. Si presume che lo sia esattamente 86.400.000 millisecondi al giorno.

Quindi, sì, ogni implementazione JavaScript che aderisce allo standard deve restituire esattamente gli stessi valori, avendo cura di eventuali stranezze fisiche dell'orologio stesso. Salvo impostazione errata dell'orologio di sistema, avrete lo stesso valore ovunque.

Si noti che la definizione di "epoca" e "secondi da" in altri linguaggi e sistemi potrebbe essere diversa (almeno la maggior parte degli altri sistemi usa secondi, non millisecondi e molto spesso prende in considerazione secondi bisestili), quindi è possibile t garantire che l'ora di JS, anche se divisa per 1000, corrisponda al timestamp da un'altra piattaforma o sistema operativo.

Problemi correlati