2007-05-19

Anropa Date.parseLocale() med en array

I dokumentation till javascript-metoden Date.parseLocale(value,formats) (som Microsoft lagt till med Ajax) står det att formats är en array av format. Det är inte sant. Den tar formaten som flera argument:

Date.parseLocale(value, format1, format2, ...)
Hur gör man då om man har en array med format och inte vill loopa över arrayen och göra ett anrop till parseLocale för varje format? Ett sätt att göra det på är att använda standard-javascript-metoden apply(thisObj, argArray). Den kan köras på ett funktionsobjekt och tar som första argument det objekt som ska bli this inne i funktionen. Som andra argument tar den en array med alla argument till funktionen.
Så vi behöver bygga en array bestående av [value, format1, format2, ...] och sen köra apply. Så här:
function myParseLocale(value,formats)
{
var args=[value];
Array.addRange(args,formats);
return Date.parseLocale.apply(Date,args);
}



Date.parseLocale är en metod som givet en sträng försöker tolka det som ett datum enligt ett av de inskickade formaten. Om den lyckas returneras ett Date-objekt.

Inga kommentarer: