Changeset 7461

Show
Ignore:
Timestamp:
02/27/07 11:49:54 (21 months ago)
Author:
peller
Message:

Fixes #2269

Location:
trunk/src/date
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/date/common.js

    r7435 r7461  
    11dojo.provide("dojo.date.common"); 
    2  
    3  
    4 /* Supplementary Date Functions 
    5  *******************************/ 
    62 
    73dojo.date.setDayOfYear = function(/*Date*/dateObject, /*Number*/dayOfYear){ 
     
    6864        // summary: Return a date object representing the first day of the given 
    6965        //   date's week. 
    70         var date = new Date(dateObject.getFullYear(), dateObject.getMonth(),  
    71                 dateObject.getDate()); 
    7266        if(isNaN(firstDay)){ 
    7367                firstDay = dojo.date.getFirstDayOfWeek ? dojo.date.getFirstDayOfWeek() : 0; 
     
    7973                offset -= (7 - dateObject.getDay()); 
    8074        } 
     75        var date = new Date(dateObject); 
     76        date.setHours(0, 0, 0, 0); 
    8177        return dojo.date.add(date, dojo.date.dateParts.DAY, offset); // Date 
    8278} 
     
    129125        var month = dateObject.getMonth(); 
    130126        var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; 
    131         if (month == 1 && dojo.date.isLeapYear(dateObject)) { return 29; } // Number 
    132         else { return days[month]; } // Number 
     127        if (month == 1 && dojo.date.isLeapYear(dateObject)){ return 29; } // Number 
     128        return days[month]; // Number 
    133129} 
    134130 
     
    144140 
    145141        var year = dateObject.getFullYear(); 
    146         return (year%400 == 0) ? true : (year%100 == 0) ? false : (year%4 == 0) ? true : false; // Boolean 
     142        return !(year%400) || (!(year%4) && !!(year%100)); // Boolean 
    147143} 
    148144 
  • trunk/src/date/supplemental.js

    r5965 r7461  
    1919        }; 
    2020 
    21         locale = dojo.hostenv.normalizeLocale(locale); 
    22         var country = locale.split("-")[1]; 
     21        var country = dojo.date._region(locale); 
    2322        var dow = firstDay[country]; 
    2423        return (typeof dow == 'undefined') ? 1 : dow; /*Number*/ 
    2524}; 
     25 
     26dojo.date._region = function(/*String?*/locale){ 
     27        locale = dojo.hostenv.normalizeLocale(locale); 
     28        var tags = locale.split('-'); 
     29        var region = tags[1]; 
     30        if(!region){ 
     31                // IE often gives language only (#2269) 
     32                // Arbitrary mappings of language-only locales to a country: 
     33        region = {de:"de", en:"us", es:"es", fi:"fi", fr:"fr", hu:"hu", it:"it", 
     34        ja:"jp", ko:"kr", nl:"nl", pt:"br", sv:"se", zh:"cn"}[tags[0]]; 
     35        }else if(region.length == 4){ 
     36                // The ISO 3166 country code is usually in the second position, unless a 
     37                // 4-letter script is given. See http://www.ietf.org/rfc/rfc4646.txt 
     38                region = tags[2]; 
     39        } 
     40        return region; 
     41} 
    2642 
    2743dojo.date.getWeekend = function(/*String?*/locale){ 
     
    4460        }; 
    4561 
    46         locale = dojo.hostenv.normalizeLocale(locale); 
    47         var country = locale.split("-")[1]; 
     62        var country = dojo.date._region(locale); 
    4863        var start = weekendStart[country]; 
    4964        var end = weekendEnd[country];