1:js的时间处理存在的陷阱:
需要考虑数据库时间存储的时区,js解析时间时的时区考虑。(考虑两者时区是否一致,否则时间会多或会少相对时区的小时);
数据库的时间存储,时区可以设置,一般是本地时区;
js解析时间时,一般按照本地时区解析。
function dataformat(date,type){
if(date=="" || date==null || date=="null"){
return "";
}
//new Date()时,需要考虑时区。先看下参数date的时区是否和js解析的时区一致,时区如果不一致,new Date()时格式化下时区
var objD=new Date(date);
var str;
var yy = objD.getYear();
if(yy<1900) yy = yy+1900;
var MM = objD.getMonth()+1;
if(MM<10) MM = '0' + MM;
var dd = objD.getDate();
if(dd<10) dd = '0' + dd;
var hh = objD.getHours();
if(hh<10) hh = '0' + hh;
var mm = objD.getMinutes();
if(mm<10) mm = '0' + mm;
var ss = objD.getSeconds();
if(ss<10) ss = '0' + ss;
if(type=="day"){
str = yy + "-" + MM + "-" + dd;
}else if(type=="seconds"){
str = yy + "-" + MM + "-" + dd + " " + hh + ":" + mm + ":" + ss;
}
return(str);
}
考虑时区处理的程序:
//js 时间处理需要考虑时区的问题。数据库和js两者存在时区问题(UTC+0800和CST)
//js的命名空间
var NewsInfor = NewsInfor || {};
NewsInfor.manage={
//时间格式化
dataformat:(function(strDate,type){
if(strDate=="" || strDate==null || strDate=="null"){
return "";
}
var dateStr=strDate.trim().split(" ");
//时区的处理
var strGMT = dateStr[0]+" "+dateStr[1]+" "+dateStr[2]+" "+dateStr[5]+" "+dateStr[3]+" GMT+0800";
var date = new Date(Date.parse(strGMT));
var y = date.getFullYear();
var m = date.getMonth() + 1;
m = m < 10 ? ('0' + m) : m;
var d = date.getDate();
d = d < 10 ? ('0' + d) : d;
var h = date.getHours();
var minute = date.getMinutes();
minute = minute < 10 ? ('0' + minute) : minute;
var second = date.getSeconds();
second = second < 10 ? ('0' + second) : second;
if(type=="year"){
str = y;
}else if(type=="month"){
str = m+"-"+d;
}
return(str);
}),
}