Je dois trier un tableau par propriété de date, mais ma date ressemble à ceci: "14.01.1970 07:55". Comment afficher cette date dans un format différent de celui du côté serveur? Et comment trier ce type de date?

0
John Bra 12 avril 2018 à 14:51

3 réponses

Meilleure réponse

Incluez simplement moment.js et il sera facile de formater: https://momentjs.com/

Par exemple, encapsulez votre horodatage moment(yourtimestamp, 'DD.MM.YYYY HH:mm') et pour formater ce que vous voulez, juste .format(yourformat)

Comme ça:

moment('14.01.1970 07:55', 'DD.MM.YYYY HH:mm').format('YYYY MM DD')

Vous pouvez les trier en créant un tableau d'horodatages Unix

moment('12.02.1980 08:55', 'DD.MM.YYYY HH:mm').format('X')

const array = [319186500, 319182900];

array.sort()

Si vous avez du lodash, peut-être _.sortBy

0
Shnigi 12 avril 2018 à 12:46

Voici comment je ferais en Javascript (alerte de code non testé):

// STEP : 1 sample Input
var input = ["01.01.1970 07:55", "06.06.1970 08:55", "03.03.1970 07:55"];

function convertToDateObj(date_string){
    // 14.01.1970 07:55
    date_string = date_string.split('.');
    // [ 0 => 01, 1 => 14, 2 => 1970 07:55 ]
    temp = date_string[0]; date_string[0] = date_string[1]; date_string[1] = date_string[0];
    // 01/14/1970 07:55
    date_string = date_string.join("/");
    // 1970-01-14T02:25:00.000Z
    return new Date(Date.parse(date_string));
}

// STEP : 2 convert to date Objects
var dateObjects = [];
for(var i=0; i<input.length; i++){
   dateObjects[i] = convertToDateObj(input[i]);
}

// STEP : 3 sort them
dateObjects.sort(function(date1, date2){
 if (date1 < date2) {
    return -1;
 } else if (date1 == date2) {
    return 0;
 } else {
    return 1;
 }
})

// your output:
console.log(dateObjects)
-1
Sahith Vibudhi 12 avril 2018 à 12:29

Vous pouvez symboliser la chaîne et instancier un nouvel objet Date.

var dateStrings = [ "14.01.1970 07:55", "14.01.1972 07:55", "14.01.1971 07:55" ]

function parseDate(dateString) {
  var tokens = dateString.split(/[\.: ]/g);  
  var date   = parseInt(tokens[0], 10);
  var month  = parseInt(tokens[1], 10) - 1;
  var year   = parseInt(tokens[2], 10);
  var hour   = parseInt(tokens[3], 10);
  var minute = parseInt(tokens[4], 10);

  return new Date(year, month, date, hour, minute);
}

// Zulu time 7 hours + timezone offset
console.log(dateStrings.map(parseDate).sort((a, b) => a > b)) 
.as-console-wrapper { top: 0; max-height: 100% !important; }
0
Mr. Polywhirl 12 avril 2018 à 12:32