javascript - formato - Eliminar segundos/milisegundos de la fecha se convierte en cadena ISO
date()/ json to javascript date (5)
Tengo un objeto de fecha que quiero
- eliminar los milisegundos / o establecer en 0
- eliminar los segundos / o poner a 0
- Convertir a cadena ISO
Por ejemplo:
var date = new Date();
//Wed Mar 02 2016 16:54:13 GMT-0500 (EST)
var stringDate = moment(date).toISOString();
//2016-03-02T21:54:13.537Z
Pero lo que realmente quiero al final es
stringDate = ''2016-03-02T21:54:00.000Z''
No hay necesidad de una biblioteca, simplemente establezca los segundos y milisegundos en cero y use el método integrado toISOString :
var d = new Date();
d.setSeconds(0,0);
document.write(d.toISOString());
Nota: toISOString no es compatible con IE 8 e inferior, hay un pollyfil en MDN .
Puede utilizar el método startOf () dentro de moment.js para lograr lo que desea.
Aquí hay un ejemplo:
var date = new Date();
var stringDateFull = moment(date).toISOString();
var stringDateMinuteStart = moment(date).startOf("minute").toISOString();
$("#fullDate").text(stringDateFull);
$("#startOfMinute").text(stringDateMinuteStart);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.2/moment.js"></script>
<p>Full date: <span id="fullDate"></span></p>
<p>Date with cleared out seconds: <span id="startOfMinute"></span></p>
Si bien esto es fácil de solucionar con javascript simple (vea la respuesta de RobG), quería mostrarle la solución de momentjs ya que marcó sus preguntas como momentjs
:
moment().seconds(0).milliseconds(0).toISOString();
Esto le da la fecha y hora actual, sin segundos o milisegundos.
Ejemplo de trabajo: http://jsbin.com/bemalapuyi/edit?html,js,output
De los documentos: http://momentjs.com/docs/#/get-set/
Soluciones javascript puras para recortar segundos y milisegundos (es decir, eliminar, no solo establecer a 0). JSPerf dice que la segunda función es más rápida.
function getISOStringWithoutSecsAndMillisecs1(date) {
const dateAndTime = date.toISOString().split(''T'')
const time = dateAndTime[1].split('':'')
return dateAndTime[0]+''T''+time[0]+'':''+time[1]
}
console.log(getISOStringWithoutSecsAndMillisecs1(new Date()))
function getISOStringWithoutSecsAndMillisecs2(date) {
const dStr = date.toISOString()
return dStr.substring(0, dStr.indexOf('':'', dStr.indexOf('':'')+1))
}
console.log(getISOStringWithoutSecsAndMillisecs2(new Date()))
Un poco tarde aquí, pero ahora puedes:
var date = new Date();
este obj tiene
date.setMilliseconds(0);
y
date.setSeconds(0);
luego llama a toISOString()
como lo haces y estarás bien.
No hay momento u otros deps.