dt_param.js
上传用户:shjujing
上传日期:2022-07-28
资源大小:11244k
文件大小:10k
源码类别:

Email客户端

开发平台:

Visual C++

  1. // TDC is to get DateTime format info for current locale
  2. function TDC() { 
  3.   var d=new Date(1970,0,0,0,0,0,0),d2=new Date(d),s1,s2,api=-1; 
  4.   d.setHours(10); d2.setHours(11); 
  5.   s1=d.toLocaleString(); s2=d2.toLocaleString(); 
  6.   this.displayHour=(s1!=s2); 
  7.   d.setHours(0); d2.setHours(0); 
  8.   d.setMinutes(10); d2.setMinutes(11); 
  9.   this.displayMinute=(d.toLocaleString()!=d2.toLocaleString()); 
  10.   d.setMinutes(0); d2.setMinutes(0); 
  11.   d.setSeconds(10); d2.setSeconds(11); 
  12.   this.displaySecond=(d.toLocaleString()!=d2.toLocaleString()); 
  13.   d.setSeconds(0); d2.setSeconds(0); 
  14.   if (this.displayHour) { 
  15.     for (i=0; i<((s1.length<s2.length)?s1.length:s2.length); i++) { 
  16.       if (s1.charAt(i)!=s2.charAt(i)) { 
  17.         api=i-1; break; 
  18.       } 
  19.     } 
  20.     d.setHours(11); d2.setHours(23); 
  21.     s1=d.toLocaleString(); s2=d2.toLocaleString(); 
  22.     this.twelveHourClock=(s1.substring(api,api+2)==s2.substring(api,api+2)); 
  23.     this.displayAMPM=(s1!=s2); 
  24.     d.setHours(0); d2.setHours(0); 
  25.     d.setHours(9); d2.setHours(11); 
  26.     this.hourLeadZero=(d.toLocaleString().length==d2.toLocaleString().length); 
  27.     d.setHours(0); d2.setHours(0); 
  28.   } else { 
  29.     this.twelveHourClock=false; 
  30.     this.displayAMPM=false; 
  31.     this.hourLeadZero=false; 
  32.   } 
  33.   if (this.displayMinute) { 
  34.     d.setMinutes(9); d2.setMinutes(11); 
  35.     this.minuteLeadZero=(d.toLocaleString().length==d2.toLocaleString().length); 
  36.     d.setMinutes(0); d2.setMinutes(0); 
  37.   } else 
  38.     this.minuteLeadZero=false; 
  39.   if (this.displaySecond) { 
  40.     d.setSeconds(9); d2.setSeconds(11); 
  41.     this.secondLeadZero=(d.toLocaleString().length==d2.toLocaleString().length); 
  42.     d.setSeconds(0); d2.setSeconds(0); 
  43.   } else 
  44.     this.secondLeadZero=false; 
  45. var TD = new TDC(); 
  46. // create time editables, hour dropdown, minute dropdown, second dropdown, and am/pm dropdown
  47. function CreateTimeEditables(paramName, postFix, enabled, cssClass, style, hour, minute, second)
  48. {
  49.    var properties = "";
  50.    if (!enabled)
  51.    {
  52.       properties += " disabled='disabled' ";
  53.    }
  54.       
  55.    if (cssClass.length != 0)
  56.    {
  57.  properties += " class='";
  58.  properties += cssClass;
  59.  properties += "' ";
  60.    }
  61.       
  62.    if (style.length != 0)
  63.    {
  64.      properties += " style='";
  65.      properties += style;
  66.      properties += "' ";
  67.    }
  68.      
  69.    var time_sep_span = "";
  70.    time_sep_span += "<span ";
  71.    time_sep_span += properties;
  72.    time_sep_span += ">";
  73.    time_sep_span += L_TIME_SEPARATOR;
  74.    time_sep_span += "</span>";
  75.    var editablesHtml = "";
  76.    if (TD.displayHour)
  77.    {
  78.       editablesHtml +=  "<SELECT ";
  79.       editablesHtml += properties;      
  80.       editablesHtml +=  " name='";
  81.       editablesHtml += paramName;
  82.       editablesHtml += postFix;
  83.       editablesHtml += "Hour'>";
  84.       
  85.       var minHour;
  86.       var maxHour;
  87.       if (TD.twelveHourClock)
  88.       {
  89.          minHour = 1;
  90.          maxHour = 12;
  91.       }
  92.       else
  93.       {
  94.          minHour = 0;
  95.          maxHour = 23;
  96.       }
  97.  
  98.       for (i = minHour; i <= maxHour ; i++){
  99.       editablesHtml += " <option value='";
  100.           editablesHtml += i;
  101.           editablesHtml += "'";
  102.           if (!TD.twelveHourClock)
  103.   {  
  104.      if (i == hour)
  105.       editablesHtml += " selected ";
  106.           }
  107.           else
  108.           {
  109.      if (( hour == 0) && (i == 12))  
  110.   editablesHtml += " selected ";
  111.              else if ((hour == 12) && (i == 12))
  112. editablesHtml += " selected ";
  113.              else if ((hour > 12) && (i == hour - 12))
  114. editablesHtml += " selected ";
  115.      else if (i == hour)
  116.                 editablesHtml += " selected ";
  117.           }
  118.           if ((i < 10) && (TD.hourLeadZero))
  119.           {
  120.              editablesHtml += "> 0";
  121.           }
  122.           else
  123.   {
  124.              editablesHtml += "> ";
  125.              
  126.           }
  127.           editablesHtml += i;
  128.           editablesHtml += "</option>n";
  129.       }
  130.        
  131.       editablesHtml +=  "        </SELECT>";
  132.    }
  133.    if (TD.displayMinute)
  134.    {
  135.       if (editablesHtml.length != 0) 
  136.       {
  137.          editablesHtml += time_sep_span;
  138.       }
  139.  
  140.       editablesHtml += "<SELECT  ";
  141.       editablesHtml += properties;    
  142.       editablesHtml += " name='";
  143.       editablesHtml += paramName;
  144.       editablesHtml += postFix;
  145.       editablesHtml += "Minute'>";
  146.       
  147.  
  148.       for (i = 0; i <= 59; i++){
  149.       editablesHtml += " <option value='";
  150.           editablesHtml += i;
  151.           editablesHtml += "'";
  152.           if (i == minute)
  153.          editablesHtml += " selected ";
  154.           if ((i < 10) && (TD.minuteLeadZero))
  155.           {
  156.              
  157.              editablesHtml += "> 0";
  158.              
  159.           }
  160.           else
  161.           {
  162.              editablesHtml += "> ";
  163.           }
  164.           editablesHtml += i;
  165.           editablesHtml += "</option>n";
  166.       }
  167.        
  168.       editablesHtml +=  "        </SELECT>";
  169.    }
  170.  
  171.    if (TD.displaySecond)
  172.    {
  173.       if (editablesHtml.length != 0)
  174.          editablesHtml += time_sep_span;
  175.       
  176.       editablesHtml += "<SELECT ";
  177.       editablesHtml += properties;  
  178.       editablesHtml += " name='";
  179.       editablesHtml += paramName;
  180.       editablesHtml += postFix;
  181.       editablesHtml += "Second'>";
  182.       
  183.  
  184.       for (i = 0; i <= 59; i++){
  185.           editablesHtml += " <option value='";
  186.           editablesHtml += i;
  187.       editablesHtml += "'";
  188.  
  189.           if (i == second)
  190.          editablesHtml += " selected ";
  191.           if ((i < 10) && (TD.secondLeadZero))
  192.              editablesHtml += "> 0";
  193.           else
  194.              editablesHtml += "> ";;
  195.           editablesHtml += i;
  196.           editablesHtml += "</option>n";
  197.       }
  198.        
  199.       editablesHtml +=  "        </SELECT>";
  200.    }
  201.    
  202.    if (TD.twelveHourClock)
  203.    {
  204.       editablesHtml +=  "<SELECT ";
  205.       editablesHtml += properties;
  206.       editablesHtml += " name='";
  207.       editablesHtml += paramName;
  208.       editablesHtml += postFix;
  209.       editablesHtml += "AMPM' >";
  210.       editablesHtml += " <option value='0'";
  211.       if (hour < 12)
  212.     editablesHtml += " selected ";
  213.       editablesHtml += "> ";
  214.       editablesHtml += L_AM_DESIGNATOR;
  215.       editablesHtml += "</option>n";
  216.       editablesHtml += " <option value='1'"; 
  217.       if (hour >= 12)
  218.     editablesHtml += " selected ";
  219.       editablesHtml += "> ";
  220.       editablesHtml += L_PM_DESIGNATOR;
  221.       editablesHtml += "</option>n";
  222.       editablesHtml +=  "        </SELECT>";
  223.    }
  224.   
  225.    return editablesHtml;
  226. }
  227. // get Locale Date/Time
  228. // d: input Date
  229. // return only Date part if includeDate==true, and includeTime== false
  230. // return only Time part if includeDate==false and includeTime== true
  231. // return datetime string if includeDate==true and includeTime == true
  232. function GLDT(d, includeDate, includeTime) { // Get Locale Date/Time 
  233.   // Returns date/and or time from locale string. 
  234.   // Assumes that date appears before time in string. 
  235.   if (includeDate && includeTime) return d.toLocaleString(); 
  236.   var d2 = new Date(d);
  237.   var ds;
  238.   var ds2;
  239.   var ml; 
  240.   d2.setMilliseconds(d.getMilliseconds()<=887 ? d.getMilliseconds()+111 : d.getMilliseconds() - 111); 
  241.   d2.setSeconds(d.getSeconds()<=49 ? d.getSeconds()+11 : d.getSeconds()-11); 
  242.   d2.setMinutes(d.getMinutes()<=49 ? d.getMinutes()+11 : d.getMinutes()-11); 
  243.   
  244.   // although TD.twelveHourClock could be true, but d.getHours will always get hours in 24
  245.   // only the localized the date string will be in twelve hour clock
  246.   // here we want d2's hour's first digit different from d1's hour's first digit
  247.   // also if d1 is morning, d2 will be in afternoon, vice versa thus we get different strings for AM, and PM
  248.   // because AM/PM could be before hours (eg. in Korean)
  249.   if (TD.twelveHourClock) 
  250.   {
  251. var hour = d.getHours();
  252. if (hour == 0 || hour == 1 || hour == 10 || hour == 11)
  253. {
  254. d2.setHours(14);
  255. else if (hour == 12 || hour == 13 || hour == 22 || hour == 23)
  256. {
  257. d2.setHours(2);
  258. }
  259. else if (hour < 12)
  260. {
  261. d2.setHours(13);
  262. }
  263. else 
  264. {
  265. d2.setHours(1);
  266. }
  267.   }
  268.   else 
  269.   { 
  270.     d2.setHours( d.getHours()<12 ? (d.getHours() == 1 ? 2 : d.getHours() + 12) : (d.getHours()<20 ? 20 : 11)); 
  271.   } 
  272.     
  273.   ds = d.toLocaleString(); 
  274.   ds2 = d2.toLocaleString(); 
  275.   ml = ds.length < ds2.length ? ds.length : ds2.length ;
  276.   for (i=0; i<ml; i++) { 
  277.     if (ds.charAt(i) != ds2.charAt(i)) 
  278. {
  279. // put the iterator back to the beginning of the word
  280. while (ds.charAt(i) != ' ') i--;
  281. i++;
  282. break;
  283. }
  284.   } 
  285.   if (includeDate) 
  286.     return ds.substring(0, i-1);
  287.   else if (includeTime) 
  288.     return ds.substring(i); 
  289.   else 
  290.     return ""; 
  291. // construct localized datetime/date/time string 
  292. // from DateTime(year, month, day, hour, minute, second)
  293. // or   Date(year, month, day)
  294. // or   Time(hour, minute, second)
  295. function NeutralDT2D(s) { 
  296.   var d="";
  297.   var td = new Date();
  298.   var a; 
  299.   if (s.indexOf("DateTime")!=-1) { 
  300.     a = s.replace("DateTime","").replace("(","").replace(")","").split(",") ;
  301.     d = GLDT(new Date(a[0], a[1]-1, a[2], a[3], a[4], a[5], 0), true, true); 
  302.   } else if (s.indexOf("Date")!=-1) { 
  303.     a = s.replace("Date","").replace("(","").replace(")","").split(",") ;
  304.     d = GLDT(new Date(a[0], a[1]-1, a[2], 0, 0, 0, 0), true, false); 
  305.   } else if (s.indexOf("Time")!=-1) { 
  306.     a = s.replace("Time","").replace("(","").replace(")","").split(","); 
  307.     d = GLDT(new Date(td.getYear(), td.getMonth(), td.getDate(), a[0], a[1], a[2]), false, true); 
  308.   }
  309.   return d; 
  310. }
  311. function NeutralDT2Date(s){
  312.   var d="";
  313.   var td = new Date();
  314.   var a; 
  315.   if (s.indexOf("DateTime")!=-1) { 
  316.     a = s.replace("DateTime","").replace("(","").replace(")","").split(",") ;
  317.     return new Date(a[0], a[1]-1, a[2], a[3], a[4], a[5], 0);
  318.   } else if (s.indexOf("Date")!=-1) { 
  319.     a = s.replace("Date","").replace("(","").replace(")","").split(",") ;
  320.     return new Date(a[0], a[1]-1, a[2], 0, 0, 0, 0);
  321.   } else if (s.indexOf("Time")!=-1) { 
  322.     a = s.replace("Time","").replace("(","").replace(")","").split(","); 
  323.     return new Date(td.getYear(), td.getMonth(), td.getDate(), a[0], a[1], a[2]);
  324.   }
  325.   return d; 
  326. }