1) Ik gebruik new Date().getTime(); om de timestamp van een datum+tijd te krijgen om hier vervolgens mee te kunnen rekenen.
Ik had eerst new Date('2014-02-25 15:00').getTime(); wat goed werkt in Chrome, maar niet in Firefox.
Naar googlen moet de spatie vervangen worden door een T. Nou werkt het goed in Chrome en Firefox, maar niet in IE(8). Ik heb ook new Date('2014-02-25T15:00:00+00:00').getTime(); e.d. geprobeerd, maar IE8 negeert de controle. Ik heb helaas in IE geen duidelijke console o.i.d. waarmee ik eenvoudig kan debuggen, dus mijn vraag is of IE8 dit überhaupt gaat accepteren? Of dat ik alsnog iets fout doe?
2) IE8 vind het niet leuk als ik id's en classes ga vullen met text d.m.v. text() of html()
Met beide functies krijg ik een foutmelding. Zijn er nog andere alternatieven/mogelijkheden?
$.each( data, function( key, val ) {
$( '#' + key ).html( val );
$( '.' + key ).html( val );
});
Webpage error details
User Agent: Mozilla/4.0 (compatible; MSIE 8.0)
Timestamp: Tue, 25 Feb 2014 14:34:13 UTC
Ik heb even wat getest en voor hoe ik het nu zie heb je een groot probleem met welke standaarden een browser implementeert als je een datetimestring gebruikt.
Chrome gaat namelijk uit van "YYYY-MM-DD[T]HH:II:SS[Z]" (T & Z optioneel) terwijl FireFox "YYYY-MM-DDTHH:II:SS" wilt en IE8 "DD-MM-YYYY HH:II:SS".
>> Met beide functies krijg ik een foutmelding. Zijn er nog andere alternatieven/mogelijkheden?
gebruik jQuery 1.*.* en niet 2.*. jQuery 2.* heeft namelijk IE <9 support laten vallen.
Hoe kan ik die verschillen in tijd het beste oplossen? Ik merk nou ook dat het op de ipad (safari) ook niet werkt zoals het moet. De timestamp werkt wel, maar ergens met het rekenen dus niet. Ik controleer namelijk of er een uur tussen nu en de ingevulde datum zit, maar het is nu 18.10. Alles daaronder geeft een melding maar 18.15 bijv niet wat dus wel zou moeten.**
Ik gebruik, zoals je ziet in de error, jQuery 1.10. Deze laad ik alleen in voor ie8 en lager anders 2.1.0.
[edit]
** In chrome bleek het ook niet meer te werken. geen idee wat ik heb verandert, maar heb ik er nou 2 uur van gemaakt (input - nu < 2 = error) input 9:00, nu 8:30 = error, input 9:30, nu 8:30 = ok.
Ook nog even andere jQuery versies geprobeerd, maar dit lost de errors van vraag 2 niet op. Laad nu jQuery 1.11.0 in voor < IE9 anders 2.1.0.
Toevoeging op 26/02/2014 10:20:20:
Vraag 2 is opgelost met not(':input')
Ik vond het antwoord uiteindelijk in een ticket
$( '#' + key ).not(':input').text( val );
$( '.' + key ).not(':input').text( val );
IE probeerde text toe te voegen aan input velden, wat niet kan met text() (Hiervoor heb je val()) Maar andere browsers accepteerden dit dus wel gewoon.
Voor vraag 1, new date, ben ik ook nog flink aan het zoeken, zonder resultaat.
Ik kwam wat topics tegen waarin new date werd afgeraden en daarvaar date.parse o.i.d. te gebruiken, maar dit werkt ook niet. Op W3C kwam ik nog een ander format tegen new Date(year, month, day, hours, minutes, seconds, milliseconds) maar dit werkt al helemaal niet.
Iemand voor de datetime naar unix nog een cross browser idee? Tot zover werkt het overal behalve in IE8.
Toevoeging op 26/02/2014 14:38:16:
Volgens mij ben ik weer een stap dichterbij een oplossing
new Date('02 feb 2014 11:00').getTime();
Geeft in IE8 ook de goede timestamp weer en ook in Chrome, Firefox en Safari.
Dit lijkt me dus het goede format om te gaan gebruiken.
Alleen nou moet ik alle maanden van cijfers naar jan,feb,etc om zetten.
Is toevallig een handige functie voor (in de Date functie zelf misschien)?
Zelf zou ik het met een array doen, maar misschien kan het makkelijker.