Números y fechas

Esta traducción está incompleta. Por favor, ayuda a traducir este artículo del inglés.

Este capítulo presenta la forma de trabajar con números y fechas en JavaScript.

Números

En JavaScript, todos están en double-precision 64-bit binary format IEEE 754 (i.e. a número entre -(253 -1) and 253 -1). No existe un tipo específico de números enteros. Además de ser capaz de representar los números de punto flotante, el tipo de número tiene tres valores simbólicos: +Infinity, -Infinity, y NaN (not-a-number). Ver también JavaScript data types and structures para el contexto con otros tipos primitivos en JavaScript.

Puede utilizar cuatro tipos de literales numéricos: decimal, binario, octal y hexadecimal.

Los números decimales

1234567890
42

// Caution when using leading zeros:

0888 // 888 parsed as decimal
0777 // parsed as octal in non-strict mode (511 in decimal)

Tenga en cuenta que los literales decimales pueden comenzar con un cero (0), seguido de otro dígito decimal, pero si la cifra siguiente después de que el 0 inicial es menor que 8, el número consigue analizada como un número octal.

Los números binarios

Sintaxis número binario utiliza un cero seguido de una minúscula o mayúscula América letra "B" (0b o 0B). Si los dígitos después del 0b no son 0 o 1, la siguiente SyntaxError se lanza: "falta dígitos binarios después 0b".

var FLT_SIGNBIT  = 0b10000000000000000000000000000000; // 2147483648
var FLT_EXPONENT = 0b01111111100000000000000000000000; // 2139095040
var FLT_MANTISSA = 0B00000000011111111111111111111111; // 8388607

Números octales

Sintaxis número Octal utiliza un cero a la izquierda. Si los dígitos después del 0 se encuentran fuera del rango de 0 a 7, el número se interpreta como un número decimal.

var n = 0755; // 493
var m = 0644; // 420

Los números hexadecimales

Sintaxis número hexadecimal utiliza un cero seguido de una minúscula o mayúscula letra latina líder "X" (0x or 0X). Si los dígitos después 0x están fuera del rango(0123456789ABCDEF),  la siguiente SyntaxError es lanzado: "Identificador comienza inmediatamente después literal numérico".

0xFFFFFFFFFFFFFFFFF // 295147905179352830000
0x123456789ABCDEF   // 81985529216486900
0XA                 // 10

Número de objetos

El incorporado Number objeto tiene propiedades para constantes numéricas, como valor máximo, not-a-número, y el infinito. No puede cambiar los valores de estas propiedades y los utilizan de la siguiente manera:

var biggestNum = Number.MAX_VALUE;
var smallestNum = Number.MIN_VALUE;
var infiniteNum = Number.POSITIVE_INFINITY;
var negInfiniteNum = Number.NEGATIVE_INFINITY;
var notANum = Number.NaN;

Siempre se refiere a una propiedad del objeto Number predefinido como se muestra arriba, y no como una propiedad de un objeto Number se crea a sí mismo.

La siguiente tabla resume las propiedades del objeto Number.

Propiedades de número
Property Description
Number.MAX_VALUE El número más grande representable
Number.MIN_VALUE El número más pequeño representable
Number.NaN "No es un número" valor especial
Number.NEGATIVE_INFINITY Valor infinito negativo Especial; regresó el desbordamiento
Number.POSITIVE_INFINITY Valor infinito positivo Especial; regresó el desbordamiento
Number.EPSILON Diferencia entre uno y el valor más pequeño mayor que uno que se puede representar como una Number.
Number.MIN_SAFE_INTEGER Número entero de seguridad mínima en JavaScript.
Number.MAX_SAFE_INTEGER Entero máximas seguras en JavaScript.
Métodos de Número
Method Description
Number.parseFloat() Analiza un argumento de cadena y devuelve un número de punto flotante.
Igual que lo global parseFloat() funcion.
Number.parseInt() Analiza un argumento de cadena y devuelve un número entero de la raíz o base especificada.
Igual que lo globalparseInt() funcion.
Number.isFinite() Determina si el valor pasado es un número finito.
Number.isInteger() Determina si el valor pasado es un entero.
Number.isNaN() Determina si el valor pasado es NaN. Versión más robusta de lo global originales isNaN().
Number.isSafeInteger() Determina si el valor proporcionado es un número que es un número entero seguro.

El prototipo Número proporciona métodos para recuperar información de objetos número en varios formatos.La siguiente tabla resume los métodos de Number.prototype.

Métodos de Number.prototype
Method Description
toExponential() Devuelve una cadena que representa el número en notación exponencial.
toFixed() Devuelve una cadena que representa el número en notación de coma fija.
toPrecision() Devuelve una cadena que representa el número con una precisión especificada en notación de coma fija.

Objeto Math

El incorporado Math objeto tiene propiedades y métodos para las constantes y funciones matemáticas. Por ejemplo, la propiedad PI del objeto Math tiene el valor de pi (3.141...),  que se usaría en una aplicación como :

Math.PI

Del mismo modo, las funciones matemáticas estándar son métodos de Math. Estos incluyen trigonométricas, logarítmicas, exponenciales, y otras funciones. Por ejemplo, si desea utilizar la función seno trigonométrico, usted escribiría

Math.sin(1.56)

Tenga en cuenta que todos los métodos trigonométricos de Matemáticas toman argumentos en radianes.

La siguiente tabla resume los métodos del objeto Math.

Métodos de  Math
Method Description
abs() Valor Abasoluto
sin(), cos(), tan() Funciones trigonométricas estándar; argumento en radianes
asin(), acos(), atan(), atan2() Funciones trigonométricas inversas; devolver valores en radianes
sinh(), cosh(), tanh() Funciones trigonométricas hiperbólicas; devolver valores en radianes.
asinh(), acosh(), atanh() Funciones trigonométricas hiperbólicas inversas; devolver valores en radianes.

pow(), exp()expm1(), log10(), log1p(), log2()

Funciones exponenciales y logarítmicas.
floor(), ceil() Devoluciones mayor / menor entero inferior / superior o igual al argumento
min(), max() Devuelve la lista de menor o mayor (respectivamente) de números separados por comas de los argumentos
random() Devuelve un número aleatorio entre 0 y 1.
round(), fround(), trunc(), Completan y funciones de truncamiento.
sqrt(), cbrt(), hypot() Raíz cuadrada, raíz cúbica, Raíz cuadrada de la suma de los argumentos cuadrados.
sign() El signo de un número, que indica si el número es positivo, negativo o cero.
clz32(),
imul()
Número de líder cero bits en la representación binaria de 32 bits.
El resultado de la multiplicación de 32 bits C-como de los dos argumentos.

A diferencia de muchos otros objetos, nunca se crea un objeto de Matemáticas de los tuyos. Siempre se utiliza el objeto incorporado en Matemáticas.

Objeto Date

JavaScript no tiene un tipo de datos de fecha. Sin embargo, puede utilizar el Date objeto y sus métodos para trabajar con fechas y horas en sus aplicaciones. El objeto Date cuenta con un gran número de métodos para configurar, obtener y manipular fechas. No tiene ninguna propiedad.

JavaScript maneja fechas de manera similar a Java. Los dos idiomas tienen muchos de los mismos métodos de la fecha, y los dos idiomas almacenar fechas como el número de milisegundos desde el 1 de enero de 1970, 00:00:00.

La gama Fecha objeto es -100000000 día a 100.000.000 día relativos a 01 de enero 1970 UTC.

Para crear un objeto Date:

var dateObjectName = new Date([parameters]);

Donde dateObjectName es el nombre del objeto Date que se está creando; que puede ser un nuevo objeto o una propiedad de un objeto existente.

Llamando Fecha sin la nueva palabra clave simplemente convierte la fecha prevista para una representación de cadena.

Los parámetros de la sintaxis anterior pueden ser cualquiera de los siguientes:

  • Nada: crea la fecha y hora de hoy. por ejemplo, today = new Date();.
  • Una cadena que representa una fecha en la forma siguiente: "Mes día, año horas: minutos: segundos". Por ejemplo, var Xmas95 = new Date("December 25, 1995 13:30:00"). Si omite horas, minutos o segundos, el valor se establece en cero.
  • Un conjunto de valores enteros para año, mes y día. Por ejemplo, var Xmas95 = new Date(1995, 11, 25).
  • Un conjunto de valores enteros para año, mes, día, hora, minutos y segundos. Por ejemplo, var Xmas95 = new Date(1995, 11, 25, 9, 30, 0);.

Métodos del objeto Date

Los métodos Fecha de objetos para la manipulación de fechas y horas caen en estas amplias categorías:

  • "set" métodos, para el establecimiento de los valores de fecha y hora en Date objects.
  • "get" métodos, para obtener los valores de fecha y hora de  Date objects.
  • "to" métodos, para devolver valores de cadena de Date objects.
  • parse and UTC métodos, para el análisis Date strings.

Con los métodos "get" y "set" puede obtener y establecer segundos, minutos, horas, días del mes, día de la semana, meses y años por separado. Hay un método getDay que devuelve el día de la semana, pero ningún método setDay correspondiente, ya que el día de la semana se ajusta automáticamente. Estos métodos utilizan números enteros para representar estos valores como sigue:

  • Seconds y minutes: 0 a59
  • Hours: 0 a 23
  • Day: 0 (Domingo) a 6 (sábado)
  • Date: 1 al 31 (día del mes)
  • Months: 0 (enero) a 11 (diciembre)
  • Year: año desde 1900

Por ejemplo, suponga que define la siguiente fecha:

var Xmas95 = new Date("December 25, 1995");

Then Xmas95.getMonth() returns 11, and Xmas95.getFullYear() returns 1995.

Los métodos getTime y setTime son útiles para comparar las fechas. El método getTime devuelve el número de milisegundos desde el 1 de enero de 1970, 00:00:00 para un objeto Date.

Por ejemplo, el siguiente código muestra el número de días para que termine el año en curso:

var today = new Date();
var endYear = new Date(1995, 11, 31, 23, 59, 59, 999); // Set day and month
endYear.setFullYear(today.getFullYear()); // Set year to this year
var msPerDay = 24 * 60 * 60 * 1000; // Number of milliseconds per day
var daysLeft = (endYear.getTime() - today.getTime()) / msPerDay;
var daysLeft = Math.round(daysLeft); //returns days left in the year

En este ejemplo se crea un objeto Date llamado hoy que contiene la fecha de hoy. A continuación, crea un objeto Date llamado endYear y establece el año para el año en curso. Luego, utilizando el número de milisegundos por día, calcula el número de días entre hoy y endYear, utilizando getTime y redondeando a un número entero de días.

El método de análisis es útil para la asignación de valores de cadenas de fecha a los objetos Fecha existentes. Por ejemplo, el código siguiente utiliza analizar y setTime para asignar un valor de fecha al objeto IPOdate:

var IPOdate = new Date();
IPOdate.setTime(Date.parse("Aug 9, 1995"));

Ejemplo

En el siguiente ejemplo, la función JSClock () devuelve la hora en el formato de un reloj digital.

function JSClock() {
  var time = new Date();
  var hour = time.getHours();
  var minute = time.getMinutes();
  var second = time.getSeconds();
  var temp = "" + ((hour > 12) ? hour - 12 : hour);
  if (hour == 0)
    temp = "12";
  temp += ((minute < 10) ? ":0" : ":") + minute;
  temp += ((second < 10) ? ":0" : ":") + second;
  temp += (hour >= 12) ? " P.M." : " A.M.";
  return temp;
}

La función JSClock crea primero un nuevo objeto Date llamado tiempo; ya que no se dan argumentos, el tiempo se crea con la fecha y la hora actual. Entonces las llamadas a los métodos getHours, getMinutes y métodos getSeconds asignar el valor de la hora actual, los minutos y segundos a horas, minutos y segundos.

Los siguientes cuatro declaraciones construir un valor de cadena en función del tiempo. La primera sentencia crea una variable temp, asignándole un valor utilizando una expresión condicional; si hora es mayor que 12, (hora - 12), de lo contrario simplemente horas, a menos que hora es 0, en cuyo caso se convierte en 12.

La siguiente sentencia añade un valor minutos a temp. Si el valor de minutos es menor que 10, la expresión condicional añade una cadena con un precedente cero; de lo contrario se añade una cadena con dos puntos de demarcación. A continuación, una declaración anexa un valor segundos a la temperatura de la misma manera.

Por último, una expresión condicional añade "P. M." a temp si hora es 12 o mayor; de lo contrario, se anexa "A. M." a temp.

Etiquetas y colaboradores del documento

Etiquetas: 
 Colaboradores en esta página: georgenevets, yakashiro
 Última actualización por: georgenevets,