2010-11-30 33 views
4

En Ruby, comment puis-je convertir les Fixnum 1291132740128 (millisecondes depuis l'époque) à l'équivalent HTML5 global time & date string (Voir aussi HTML5 time element explanation Par exemple, 1979-10-14T12:. 00: 00.001- 04:00)?Convertir temps Ruby à jour globale HTML5 et heure chaîne

Ma première tentative:

> Time.at(1291132740128/1000.0).strftime("%Y-%m-%dT%H:%M:%S-%Z") 
=> "2010-11-30T10:59:00-EST" 

Mais, (1) comment puis-je obtenir les millisecondes? Est-ce que Time stocke les millisecondes?
Et, (2) comment puis-je obtenir le fuseau horaire à -0400 ou -0500, selon si c'est l'heure d'été?

EDIT: Maintenant que j'y pense, peut-être qu'il vaut mieux le garder comme 1291132740128 et faire la conversion avec JavaScript en fonction de l'emplacement du navigateur. Qu'est-ce que tu penses?

Répondre

1

1) %3N en strftime vous donnera millisecondes:

Time.at(1291132740128/1000.0).strftime("%Y-%m-%dT%H:%M:%S.%3N-%Z") 
=> "2010-11-30T16:59:00.128-CET" 

2) est-ce pas automatique?

EDIT: Que se passerait-il si l'utilisateur avait désactivé son JS dans ce cas? Je pense que cela dépend de l'utilisation.

+0

Merci! Je me demande quel pourcentage de hits est fait par des navigateurs sans JavaScript activés ... probablement très petit. – ma11hew28

+0

Quoi qu'il en soit, comptez aussi des robots de recherche. Si tel est, par exemple, le moment où une entrée de blog a été écrit, je vais certainement essayer de le garder lisible en HTML, pas JS. –

1

Il ne montre pas les miliseconds mais vous pouvez essayer ceci:

Time.at(1291132740128/1000.0).xmlschema 
=> "2010-11-30T16:59:00+01:00"