Comment puis-je obtenir l'horodatage Unix de l'époque il y a 1 mois?
Je sais que je dois utiliser Date()
Une réponse simpliste est:
// Get a date object for the current time
var d = new Date();
// Set it to one month ago
d.setMonth(d.getMonth() - 1);
// Zero the hours
d.setHours(0, 0, 0);
// Zero the milliseconds
d.setMilliseconds(0);
// Get the time value in milliseconds and convert to seconds
console.log(d/1000|0);
Notez que si vous soustrayez un mois à partir du 31 juillet, vous obtenez le 31 juin, qui sera converti au 1er juillet. de même, le 31 mars ira au 31 février qui se convertira au 2 ou au 3 mars selon qu'il s'agit d'une année bissextile ou non.
Vous devez donc vérifier le mois:
var d = new Date();
var m = d.getMonth();
d.setMonth(d.getMonth() - 1);
// If still in same month, set date to last day of
// previous month
if (d.getMonth() == m) d.setDate(0);
d.setHours(0, 0, 0);
d.setMilliseconds(0);
// Get the time value in milliseconds and convert to seconds
console.log(d / 1000 | 0);
Notez que les valeurs de temps JavaScript sont en millisecondes depuis 1970-01-01T00: 00: 00Z, tandis que les valeurs de temps UNIX sont en secondes depuis la même époque, d'où la division par 1000.
Vous pouvez jeter un œil à Moment.JS. Il a un tas de méthodes utiles liées à la date.
Vous pourriez faire:
moment().subtract('months', 1).unix()
var d = new Date();
Et réglez le mois sur un mois avant. (ÉDITÉ)
d.setMonth(d.getMonth()-1);