Pregunta

Estoy almacenar en una base de datos MySQL como un timestamp de Unix y que se envía a código JavaScript.¿Cómo puedo obtener el tiempo de espera de ella?

Por ejemplo, en HH/MM/SS formato.

¿Fue útil?

Solución

// Create a new JavaScript Date object based on the timestamp
// multiplied by 1000 so that the argument is in milliseconds, not seconds.
var date = new Date(unix_timestamp*1000);
// Hours part from the timestamp
var hours = date.getHours();
// Minutes part from the timestamp
var minutes = "0" + date.getMinutes();
// Seconds part from the timestamp
var seconds = "0" + date.getSeconds();

// Will display time in 10:30:23 format
var formattedTime = hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2);

Para obtener más información sobre el objeto Date, consulte MDN o la ECMAScript 5 especificación .

Otros consejos

function timeConverter(UNIX_timestamp){
  var a = new Date(UNIX_timestamp * 1000);
  var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
  var year = a.getFullYear();
  var month = months[a.getMonth()];
  var date = a.getDate();
  var hour = a.getHours();
  var min = a.getMinutes();
  var sec = a.getSeconds();
  var time = date + ' ' + month + ' ' + year + ' ' + hour + ':' + min + ':' + sec ;
  return time;
}
console.log(timeConverter(0));

JavaScript funciona en milisegundos, por lo que primero tiene que convertir la marca de tiempo UNIX de segundos a milisegundos.

var date = new Date(UNIX_Timestamp * 1000);
// Manipulate JavaScript Date object here...

Soy parcial a Date.format() biblioteca de Jacob Wright, que implementa el formato de fechas en JavaScript el estilo de date() función.

new Date(unix_timestamp * 1000).format('h:i:s')

Aquí está la solución más corto de una sola línea a formato segundos como hh:mm:ss:

/**
 * Convert seconds to time string (hh:mm:ss).
 *
 * @param Number s
 *
 * @return String
 */
function time(s) {
    return new Date(s * 1e3).toISOString().slice(-13, -5);
}

console.log( time(12345) );  // "03:25:45"
  

Date.prototype.toISOString() devuelve el tiempo en   simplificada ampliada ISO 8601 formato, que es siempre 24 o 27 caracteres de largo (es decir YYYY-MM-DDTHH:mm:ss.sssZ o   ±YYYYYY-MM-DDTHH:mm:ss.sssZ respectivamente). La zona horaria es siempre   cero UTC.

N.B .: Esta solución no requiere ninguna biblioteca de terceros y es compatible con todos los navegadores modernos y los motores de JavaScript.

Uso:

var s = new Date(1504095567183).toLocaleDateString("en-US")
// expected output "8/30/2017"   

y por el tiempo:

var s = new Date(1504095567183).toLocaleTimeString("en-US") 
// expected output "3:19:27 PM"`

ver Date.prototype.toLocaleDateString ()

que lo pensaría usando una biblioteca como momentjs.com , que lo hace muy sencillo:

Sobre la base de una marca de tiempo Unix:

var timestamp = moment.unix(1293683278);
console.log( timestamp.format("HH/mm/ss") );

A partir de una cadena de fecha MySQL:

var now = moment("2010-10-10 12:03:15");
console.log( now.format("HH/mm/ss") );

UNIX timestamp es el número de segundo desde 00:00:00 UTC el 1 de enero, 1970 (de acuerdo con Wikipedia ).

Argumento de Fecha objeto en Javascript es el número de milisegundos desde 00:00:00 UTC el 1 de enero, 1970 (de acuerdo con W3Schools Javascript documentación ).

Ver código de abajo, por ejemplo:

    function tm(unix_tm) {
        var dt = new Date(unix_tm*1000);
        document.writeln(dt.getHours() + '/' + dt.getMinutes() + '/' + dt.getSeconds() + ' -- ' + dt + '<br>');

    }

tm(60);
tm(86400);

da:

1/1/0 -- Thu Jan 01 1970 01:01:00 GMT+0100 (Central European Standard Time)
1/0/0 -- Fri Jan 02 1970 01:00:00 GMT+0100 (Central European Standard Time)

Moment.js , puede obtener la fecha y hora de esta manera:

var dateTimeString = moment(1439198499).format("DD-MM-YYYY HH:mm:ss");

Y se puede obtener sólo el tiempo usando la siguiente:

var timeString = moment(1439198499).format("HH:mm:ss");

El problema con las soluciones antes mencionadas es, que si horas, minutos o segundos, tiene una sola dígitos (es decir, 0-9), el tiempo sería erróneo, por ejemplo, podría ser 2: 3:. 9, pero debería ser más bien 2:03:09

De acuerdo con esta página parece ser un mejor solución para el uso del método "toLocaleTimeString" de la fecha.

Otra forma -. Desde un ISO 8601 fecha

var timestamp = 1293683278;
var date = new Date(timestamp*1000);
var iso = date.toISOString().match(/(\d{2}:\d{2}:\d{2})/)
alert(iso[1]);

En momento en que se debe utilizar marca de tiempo Unix:

var dateTimeString = moment.unix(1466760005).format("DD-MM-YYYY HH:mm:ss");

más corta solución de una sola línea para formatear segundos como hh: mm: ss: variante:

console.log(new Date(1549312452 * 1000).toISOString().slice(0, 19).replace('T', ' '));
// "2019-02-04 20:34:12"

La solución moderna que no necesita una biblioteca de 40 KB:

Intl.DateTimeFormat es la no -culturally manera imperialista para dar formato a una fecha / hora.

// Setup once
var options = {
    //weekday: 'long',
    //month: 'short',
    //year: 'numeric',
    //day: 'numeric',
    hour: 'numeric',
    minute: 'numeric',
    second: 'numeric'
},
intlDate = new Intl.DateTimeFormat( undefined, options );

// Reusable formatter
var timeStamp = 1412743273;
console.log( intlDate.format( new Date( 1000 * timeStamp ) ) );

Sobre la base de la respuesta de @ Shomrat, aquí es un fragmento que escribe automáticamente la fecha y hora como esto (un poco similar a la fecha de stackoverflow respuestas: answered Nov 6 '16 at 11:51):

today, 11:23

o

yersterday, 11:23

o (si es diferente pero el mismo año que el de hoy)

6 Nov, 11:23

o (si un año más que en la actualidad)

6 Nov 2016, 11:23

function timeConverter(t) {     
    var a = new Date(t * 1000);
    var today = new Date();
    var yesterday = new Date(Date.now() - 86400000);
    var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
    var year = a.getFullYear();
    var month = months[a.getMonth()];
    var date = a.getDate();
    var hour = a.getHours();
    var min = a.getMinutes();
    if (a.setHours(0,0,0,0) == today.setHours(0,0,0,0))
        return 'today, ' + hour + ':' + min;
    else if (a.setHours(0,0,0,0) == yesterday.setHours(0,0,0,0))
        return 'yesterday, ' + hour + ':' + min;
    else if (year == today.getFullYear())
        return date + ' ' + month + ', ' + hour + ':' + min;
    else
        return date + ' ' + month + ' ' + year + ', ' + hour + ':' + min;
}
function getTIMESTAMP() {
      var date = new Date();
      var year = date.getFullYear();
      var month = ("0"+(date.getMonth()+1)).substr(-2);
      var day = ("0"+date.getDate()).substr(-2);
      var hour = ("0"+date.getHours()).substr(-2);
      var minutes = ("0"+date.getMinutes()).substr(-2);
      var seconds = ("0"+date.getSeconds()).substr(-2);

      return year+"-"+month+"-"+day+" "+hour+":"+minutes+":"+seconds;
    }
//2016-01-14 02:40:01

Mi marca de tiempo se recuperan de PHP backend.He intentado todos los métodos anteriores, y no funcionó.Entonces me encontré con un tutorial en el que trabajó:

var d =val.timestamp;
var date=new Date(+d); //NB: use + before variable name

console.log(d);
console.log(date.toDateString());
console.log(date.getFullYear());
console.log(date.getMinutes());
console.log(date.getSeconds());
console.log(date.getHours());
console.log(date.toLocaleTimeString());

los métodos anteriores generará los resultados de este

1541415288860
Mon Nov 05 2018 
2018 
54 
48 
13
1:54:48 PM

Hay un montón de métodos que funcionan perfectamente con las marcas de tiempo.Cant lista de todos ellos

Tenga en cuenta el cero problema con algunas de las respuestas. Por ejemplo, la marca de tiempo 1439329773 sería convertida por error a 12/08/2015 0:49.

Yo sugeriría el uso de las siguientes acciones para superar este problema:

var timestamp = 1439329773; // replace your timestamp
var date = new Date(timestamp * 1000);
var formattedDate = ('0' + date.getDate()).slice(-2) + '/' + ('0' + (date.getMonth() + 1)).slice(-2) + '/' + date.getFullYear() + ' ' + ('0' + date.getHours()).slice(-2) + ':' + ('0' + date.getMinutes()).slice(-2);
console.log(formattedDate);

Ahora resulta en:

12/08/2015 00:49
// Format value as two digits 0 => 00, 1 => 01
function twoDigits(value) {
   if(value < 10) {
    return '0' + value;
   }
   return value;
}

var date = new Date(unix_timestamp*1000);
// display in format HH:MM:SS
var formattedTime = twoDigits(date.getHours()) 
      + ':' + twoDigits(date.getMinutes()) 
      + ':' + twoDigits(date.getSeconds());

Consulte Fecha / Epoch convertidor .

Es necesario ParseInt, de lo contrario no funcionaría:


if (!window.a)
    window.a = new Date();

var mEpoch = parseInt(UNIX_timestamp);

if (mEpoch < 10000000000)
    mEpoch *= 1000;

------
a.setTime(mEpoch);
var year = a.getFullYear();
...
return time;

Puede utilizar la siguiente función para convertir su marca de tiempo a HH:MM:SS formato:

var convertTime = function(timestamp, separator) {
    var pad = function(input) {return input < 10 ? "0" + input : input;};
    var date = timestamp ? new Date(timestamp * 1000) : new Date();
    return [
        pad(date.getHours()),
        pad(date.getMinutes()),
        pad(date.getSeconds())
    ].join(typeof separator !== 'undefined' ?  separator : ':' );
}

Sin pasar un separador, que utiliza : como el separador (predeterminado):

time = convertTime(1061351153); // --> OUTPUT = 05:45:53

Si desea utilizar / como separador, sólo tiene que pasar como el segundo parámetro:

time = convertTime(920535115, '/'); // --> OUTPUT = 09/11/55

Demostración

var convertTime = function(timestamp, separator) {
    var pad = function(input) {return input < 10 ? "0" + input : input;};
    var date = timestamp ? new Date(timestamp * 1000) : new Date();
    return [
        pad(date.getHours()),
        pad(date.getMinutes()),
        pad(date.getSeconds())
    ].join(typeof separator !== 'undefined' ?  separator : ':' );
}

document.body.innerHTML = '<pre>' + JSON.stringify({
    920535115 : convertTime(920535115, '/'),
    1061351153 : convertTime(1061351153, ':'),
    1435651350 : convertTime(1435651350, '-'),
    1487938926 : convertTime(1487938926),
    1555135551 : convertTime(1555135551, '.')
}, null, '\t') +  '</pre>';

esta violín .

function timeConverter(UNIX_timestamp){
 var a = new Date(UNIX_timestamp*1000);
     var hour = a.getUTCHours();
     var min = a.getUTCMinutes();
     var sec = a.getUTCSeconds();
     var time = hour+':'+min+':'+sec ;
     return time;
 }

Si desea convertir a la duración del tiempo de Unix reales horas, minutos y segundos, se puede utilizar el siguiente código:

var hours = Math.floor(timestamp / 60 / 60);
var minutes = Math.floor((timestamp - hours * 60 * 60) / 60);
var seconds = Math.floor(timestamp - hours * 60 * 60 - minutes * 60 );
var duration = hours + ':' + minutes + ':' + seconds;
 function getDateTimeFromTimestamp(unixTimeStamp) {
    var date = new Date(unixTimeStamp);
    return ('0' + date.getDate()).slice(-2) + '/' + ('0' + (date.getMonth() + 1)).slice(-2) + '/' + date.getFullYear() + ' ' + ('0' + date.getHours()).slice(-2) + ':' + ('0' + date.getMinutes()).slice(-2);
  }

var myTime = getDateTimeFromTimestamp(1435986900000);
console.log(myTime); // output 01/05/2000 11:00
function getDateTime(unixTimeStamp) {

    var d = new Date(unixTimeStamp);
    var h = (d.getHours().toString().length == 1) ? ('0' + d.getHours()) : d.getHours();
    var m = (d.getMinutes().toString().length == 1) ? ('0' + d.getMinutes()) : d.getMinutes();
    var s = (d.getSeconds().toString().length == 1) ? ('0' + d.getSeconds()) : d.getSeconds();

    var time = h + '/' + m + '/' + s;

    return time;
}

var myTime = getDateTime(1435986900000);
console.log(myTime); // output 01/15/00

Código de abajo también proporciona millisecs de 3 dígitos, ideal para la consola prefijos de registro:

const timeStrGet = date => {
    const milliSecsStr = date.getMilliseconds().toString().padStart(3, '0') ;
    return `${date.toLocaleTimeString('it-US')}.${milliSecsStr}`;
};

setInterval(() => console.log(timeStrGet(new Date())), 299);

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top