jsにおけるdateとString変換


JS中文字の日付
var remindTime = "2008-04-02 10:08:44"; 
直接new Date(remindTime)でいいです.
 
1.一般的な方法ですが、煩雑です.
主にDateを用いた構造方法:Date(int year,int month,int day)
 
<script>
var str1 = "2009-8-9";
var arr1 = str1.split("-");
var date1 = new Date(arr1[0],parseInt(arr1[1])-1,arr1[2]);

var str2 = "2009-8-4";
var arr2 = str2.split("-");
var date2 = new Date(arr2[0],parseInt(arr2[1])-1,arr2[2]);

alert(date1>date2);//true
</script>

 2.簡単な方法:
var  str =   "2005-12-15"; 
var  d   =   new   Date(str.replace(/-/g,   "/"));

 
/-/g js      ,     

re   =   /pattern/[flags]

    "/ "           
g   (            pattern)  
i   (     )  
m   (    )

 Example:
 <script>
  	 var s = "2010-09-11";
  	 var s1 = "2010-09-12";
  	 var d = new Date(s.replace(/-/g,"/"));
  	 var d1 = new Date(s1.replace(/-/g,"/"));
  	 var m = (d1.getTime()-d.getTime())/(1000*60*60);
  	 alert(m);  //24
  </script>

 
 
JS比較時間:
 
<script language="JavaScript"> 

//      ,  a>b  1,  a<b  -1,    0 
function comptime(a,b) 
{ 
var dateA = new Date("1900/1/1 " + a); 
var dateB = new Date("1900/1/1 " + b); 
if(isNaN(dateA) || isNaN(dateB)) return null; 
if(dateA > dateB) return 1; 
if(dateA < dateB) return -1; 
return 0; 
} 

var timeStart = "3:20"; 
var timeEnd = "2:11"; 

if(comptime(timeStart,timeEnd) != -1)
      alert("            !"); 

</script>

 ----------------------------------------------------------------------------------------------------------------------
 
1、数日後の時間を取得する方法:
(元々はCalendarメソッドを使うことを考えていたのですが、jsではCalendarがまったく使えないことに気づきました)
   var dt = new Date();
  
 lont time = dt.valueOf() //  1970       
 Long time = dt.getTime();//     1970 1 1 0 0 0     
 Lont time = System.currentTimeMillis());//      

   alert(new Date(1000*60*60*24 + dt.valueOf()))
   alert(new Date(1000*60*60*24 + date.getTime()))
	//      

抽出方法:
var DAY = 1000*60*60*24;
	  Date.prototype.addDays = function(num){
		return new Date((num*DAY)+this.valueOf());
	  }
window.onload=function(){		
		var dt = new Date();
		alert(dt.addDays(2));
	}

ここではnew Date()に注意する.valueOf()もミリ秒数を得ることができて、これは以前はまったく使ったことがなくて、ほほほ
 
2、dateタイプ転Strタイプ:
//var mths = ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"];
//var WEEKs =["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday","Saturday"];
//var WEKs = [ "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT" ];

 
1、常用方法
//   Str
function toDDMMMYYYY(date) {
	var d = new Date(date.getTime());
	var dd = d.getDate() < 10 ? "0" + d.getDate() : d.getDate().toString();
	var mmm = mths[d.getMonth()];
	var yyyy = d.getFullYear().toString(); //2011
		//var YY = YYYY.substr(2);   // 11
	return dd + mmm + yyyy;
}

function toDDMMMYY(date) {
	var d = toDDMMMYYYY(date);
	return d.substring(0, 5) + d.substring(7, 9);
}

この方法は最後のStrのフォーマットを制限し、柔軟に使用するには、次の方法を使用します.
 
2、自分でフォーマットを定義する:
Date.prototype.parseStr = function(format) {
	var YYYY = this.getFullYear(); //2011
	
	var YY = YYYY.substr(2);   // 11
		format = format.replaceAll("@YYYY@",YYYY);
		format = format.replaceAll("@YY@",YY);
		
	var M=this.getMonth()+1;
	var MM=(M<10)?"0"+M:M;
	var MMM=mths[M - 1];
		format=format.replaceAll("@MMM@",MMM);
		format=format.replaceAll("@MM@",MM);
		format=format.replaceAll("@M@",M);
		
	var D=this.getDate();
	var DD=(D<10)?"0"+D:D;
		format=format.replaceAll("@DD@",DD);
		format=format.replaceAll("@D@",D);
		
	var h=this.getHours();
	var hh=(h<10)?"0"+h:h;
		format=format.replaceAll("@hh@",hh);
		format=format.replaceAll("@h@",h);
	var m=this.getMinutes();
	var mm=(m<10)?"0"+m:m;
		format=format.replaceAll("@mm@",mm);
		format=format.replaceAll("@m@",m);
	var s=this.getSeconds();
	var ss=(s<10)?"0"+s:s;
		format=format.replaceAll("@ss@",ss);
		format=format.replaceAll("@s@",s);
	var dayOfWeek=this.getDay();
	    format=format.replaceAll("@WEEK@",WEEKs[dayOfWeek]);
		format=format.replaceAll("@WEK@",WEKs[dayOfWeek]);
	return format;
}

使用する場合は、次のようにします.
//var outdateStr = outdate.parseStr("@DD@-@MMM@-@YYYY@");

次の点に注意してください.
jsはreplaceAllメソッドを提供しないで、replaceメソッドだけあって、forサイクルでまた効率的な問題があって、最も良い方法は正規表現を使うことです
 
String.prototype.replaceAll = function (A,B){
           var C=this;
		for (var i=0;i<C.length;i++){
			C=C.replace(A,B);
		};
	  return C;
       }

 
String.prototype.replaceAll  = function(s1,s2){   
	 return this.replace(new RegExp(s1,"gm"),s2);   
    }

自分でreplaceAllメソッドを定義したら、上のようにreplaceAllを使うことができます.
 
jsでのreplaceメソッド:
                    replace(regexp/substr,replacement)
<script>
	var str="Visit Microsoft!"
	alert(str.replace("Microsoft", "W3School"));
	  //alert((str.replace(/Microsoft/, "W3School"));    
</script>

追加:
Dateから曜日を求める:WEKs[date.getDay()];