Skip to content Skip to sidebar Skip to footer

How To Handle Dates In Backbone?

I store dates in the DATETIME format in a MySQL database. When a model is fetched from the database, dates (in the DATETIME format) are converted to date objects in the model's ini

Solution 1:

I would advice using UNIX time (number of seconds/milliseconds from 1970) both in model and in the interface and converting to readable date only in View.

So the server both sends and receives dates as numbers like 1328281766454 and this is how you store them in Backbone.Model. When it has to be rendered in View you can simply call:

new Date(this.model.get('someTime'));  //Fri Feb 03 2012 16:09:26 GMT+0100 (CET)

The same can be done on the server side. Believe me, this is the simplest and most portable way of transfrering dates without all these time-zone issues.

Solution 2:

I'd do it one of two places:

  • On the server:

    This probably makes the most sense, since your server-side implementation is really the one that needs the DATETIME representation; your client code shouldn't have to care at all.

  • In toJSON() on your model:

    If you must do it on the client, override Backbone.Model's toJSON() for your model and update it there. Example:

    toJSON: function () {
        var json = Backbone.Model.prototype.toJSON.call(this);
        json.date = convertDate(this.get('date'));
        return json;
    }
    

    If you do this, you'll need to convert the date back, either in your model's initialize() or parse() function.

Solution 3:

May not be the answer your looking for - but have seen folks use moment.js to format time in backbone -

http://momentjs.com/

Post a Comment for "How To Handle Dates In Backbone?"