La manière de voter, Long Int en Scala?
Je voudrais utiliser ce qui suit de la fonction de convertir de Joda Temps de timestamp Unix:
def toUnixTimeStamp(dt : DateTime) : Int = {
val millis = dt.getMillis
val seconds = if(millis % 1000 == 0) millis / 1000
else { throw new IllegalArgumentException ("Too precise timestamp") }
if (seconds > 2147483647) {
throw new IllegalArgumentException ("Timestamp out of range")
}
seconds
}
Valeurs de temps j'ai l'intention de les obtenir ne sont jamais attendus à la milliseconde-précis, ils sont en second lieu précis de l'UTC par le contrat et doivent être enregistrées (dans une base MySQL) que Int, Unix standard horodatages sont notre norme d'entreprise pour les records de temps. Mais Joda Time fournit seulement getMillis et pas getSeconds, donc, je dois obtenir un Long ordre de la milliseconde précis d'horodatage et de le diviser par 1000 pour produire une norme timestamp Unix.
Et je suis bloqué faire Scala de faire un Int d'une valeur de type Long. Comment faire un tel casting?
- Connexes: stackoverflow.com/questions/931463/...
Vous devez vous connecter pour publier un commentaire.
Utiliser le
.toInt
méthode sur le Long, c'est à direseconds.toInt
.toInt
est mieux queasInstanceOf[Int]
. a quoi je pensais.toInt
est toujours dans les moyens de la Scala de la bibliothèque standard (et je l'espère avec de bonnes optimisations et de vérification etc) alors queasInstanceOf
est comme ouvrir l'issue de secours, pendant que l'avion est en l'air.class Foo; (new Foo).asInstanceOf[Int]
compile, mais jette unClassCastException
au moment de l'exécution. Donc à l'aide d'un plâtre, vous perdez le bénéfice de vérifier le type statique au moment de la compilation.