[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.javascript

Ordering time stamp

Andrew Poulos

9/15/2014 4:18:00 AM

A piece of elearning I'm working generates JSON as an array of objects
(from a "new" standard called Tin Can). Each object has a timestamp
property.

How do I order the array from the time stamp where a time stamp looks
like one of these:
timestamp: "2014-09-15T03:27:16.017Z"
timestamp: "2014-09-15T03:27:17.023Z"
timestamp: "2014-09-15T03:27:17.029Z"

The standard's example js shows the generation of a time stamp with this

if (this.timestamp === null) {
this.timestamp = TinCan.Utils.getISODateString(new Date());
}

Can I simply do something based on (for example):

var x = new Date("2014-09-15T03:27:16.017Z");
var y = new Date("2014-09-15T03:27:17.023Z");

if (x > y) {
// x is newer
} else {
// y is newer
}

Andrew Poulos
4 Answers

Ben Bacarisse

9/15/2014 12:55:00 PM

0

Andrew Poulos <ap_prog@hotmail.com> writes:

> A piece of elearning I'm working generates JSON as an array of objects
> (from a "new" standard called Tin Can). Each object has a timestamp
> property.
>
> How do I order the array from the time stamp where a time stamp looks
> like one of these:
> timestamp: "2014-09-15T03:27:16.017Z"
> timestamp: "2014-09-15T03:27:17.023Z"
> timestamp: "2014-09-15T03:27:17.029Z"
>
> The standard's example js shows the generation of a time stamp with this
>
> if (this.timestamp === null) {
> this.timestamp = TinCan.Utils.getISODateString(new Date());
> }
>
> Can I simply do something based on (for example):
>
> var x = new Date("2014-09-15T03:27:16.017Z");
> var y = new Date("2014-09-15T03:27:17.023Z");
>
> if (x > y) {
> // x is newer
> } else {
> // y is newer
> }

Yes, but that hides the conversion that's being done. It may be better
to explicitly compare the times so you don't get a surprise when using
==.

if (x.getTime() > y.getTime())

However, if the timestamps are always in the form shown (and you don't
need the Date objects for some other reason), you could just compare the
strings without making Date objects from them.

--
Ben.

Denis McMahon

9/16/2014 2:30:00 AM

0

On Mon, 15 Sep 2014 14:17:32 +1000, Andrew Poulos wrote:

> A piece of elearning I'm working generates JSON as an array of objects
> (from a "new" standard called Tin Can). Each object has a timestamp
> property.
>
> How do I order the array from the time stamp where a time stamp looks
> like one of these:
> timestamp: "2014-09-15T03:27:16.017Z"
> timestamp: "2014-09-15T03:27:17.023Z"
> timestamp: "2014-09-15T03:27:17.029Z"
>
> The standard's example js shows the generation of a time stamp with this
>
> if (this.timestamp === null) {
> this.timestamp = TinCan.Utils.getISODateString(new Date());
> }
>
> Can I simply do something based on (for example):
>
> var x = new Date("2014-09-15T03:27:16.017Z");
> var y = new Date("2014-09-15T03:27:17.023Z");
>
> if (x > y) {
> // x is newer
> } else {
> // y is newer
> }

func cmpab(a,b) {
if ( a.timestamp > b.timestamp ) return 1;
if ( a.timestamp > b.timestamp ) return -1;
return 0;
}

Then given an array of objects that have a timestamp string prop you can
sort the array using:

arr.sort(cmpab);

--
Denis McMahon, denismfmcmahon@gmail.com

Andrew Poulos

9/16/2014 3:30:00 AM

0

On 16/09/2014 12:30 PM, Denis McMahon wrote:
> On Mon, 15 Sep 2014 14:17:32 +1000, Andrew Poulos wrote:
>
>> A piece of elearning I'm working generates JSON as an array of objects
>> (from a "new" standard called Tin Can). Each object has a timestamp
>> property.
>>
>> How do I order the array from the time stamp where a time stamp looks
>> like one of these:
>> timestamp: "2014-09-15T03:27:16.017Z"
>> timestamp: "2014-09-15T03:27:17.023Z"
>> timestamp: "2014-09-15T03:27:17.029Z"
>>
>> The standard's example js shows the generation of a time stamp with this
>>
>> if (this.timestamp === null) {
>> this.timestamp = TinCan.Utils.getISODateString(new Date());
>> }
>>
>> Can I simply do something based on (for example):
>>
>> var x = new Date("2014-09-15T03:27:16.017Z");
>> var y = new Date("2014-09-15T03:27:17.023Z");
>>
>> if (x > y) {
>> // x is newer
>> } else {
>> // y is newer
>> }
>
> func cmpab(a,b) {
> if ( a.timestamp > b.timestamp ) return 1;
> if ( a.timestamp > b.timestamp ) return -1;
> return 0;
> }

Thanks, but I guess you mean for the second if
if ( a.timestamp < b.timestamp ) return -1;

> Then given an array of objects that have a timestamp string prop you can
> sort the array using:
>
> arr.sort(cmpab);

Andrew Poulos

Denis McMahon

9/16/2014 2:46:00 PM

0

On Tue, 16 Sep 2014 13:29:47 +1000, Andrew Poulos wrote:

> Thanks, but I guess you mean for the second if
> if ( a.timestamp < b.timestamp ) return -1;

Yes, oops. ;)

--
Denis McMahon, denismfmcmahon@gmail.com