Search code examples
breeze

Working with dates in breeze


I'm having some trouble working with dates.

I have an object with a date field:

public DateTime FechaInicio{get; set;}

This definition generates the following field in the database:

FechaInicio datetime not null

Making the request to the web service I get the date ( in the JSON ) in the following format:

"FechaInicio": "1982-12-02T00: 00:00"

And calling FechaInicio() on tne entity returns a javascript Date object.

Creating a new entity I get the following value:

createPalanca var = function () {
    MetadataStore var = manager.metadataStore;
    metadataStore.getEntityType palancaType = var ("Toggle");
    palancaType.createEntity newPalanca = var ();
    manager.addEntity (newPalanca);

    //Here: newPalanca.FechaInicio () has the value in this format: 1355313343214
    //Expected Date object here
    newPalanca return;
};

After all, my real question is: What format should I use to assign new values ​​to date type fields?

Edit:

After doing some tests, I noticed that if I assign a Date object to the property, everything seems fine until we got to this line:

saveBundleStringified var = JSON.stringify (saveBundle);

saveBundle content is:

FechaInicio: Thu Dec 20 2012 00:00:00 GMT+0100 (Hora estándar romance)

and the saveBundleStringified:

"FechaInicio": "2012-12-19T23:00:00.000Z" <- I guess this is utc format

What finally is stored in the database is: 2012-12-19 23:00:00.0000000

When the result of the call to SaveChanges are returned , they are merged with the entities in cache at the function updateEntity which does this check: if (!core.isDate(val)) that returns false. As a consequence it is created a new Date object with the wrong date:

function fastDateParse(y, m, d, h, i, s, ms){ //2012 12 19 23 00 00 ""
    return new Date(y, m - 1, d, h || 0, i || 0, s || 0, ms || 0);
}

Correct me if I'm wrong, but I think that's the problem.


Solution

  • Sorry for taking so long...

    There were bugs with Breeze's DateTime timezone serialization and the default DateTime values used for newly constructed entities with non-nullable date fields. These are fixed as of v 0.77.2. Please confirm if this set of fixes works for you.

    And thanks for finding these.

    And to answer your question, all date properties on your object should be set to javascript Dates. Breeze should handle all of the serialization issues properly.