北京时间

收集整理一些天气与时间日期相关的信息

unix时间转换北京时间怎么算?unix时间戳转北京时间

当前日期:2024-12-28 18:28:00

js时间戳怎么转成日期格式

调用 getSmpFormatDateByLong(long,true)

long是时间戳

true表示获取到的结果是 yyyy-MM-dd hh:mm:ss格式

false则得到的事 yyyy-MM-dd格式

Date.prototype.format=function(format){

varo={

"M+":this.getMonth()+1,

"d+":this.getDate(),

"h+":this.getHours(),

"m+":this.getMinutes(),

"s+":this.getSeconds(),

"q+":Math.floor((this.getMonth()+3)/3),

"S":this.getMilliseconds()

}

if(/(y+)/.test(format)){

format=format.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length));

}

for(varkino){

if(newRegExp("("+k+")").test(format)){

format=format.replace(RegExp.$1,RegExp.$1.length==1?o[k]:("00"+o[k]).substr((""+o[k]).length));

}

}

returnformat;

}

/**

*转换日期对象为日期字符串

*@paramdate日期对象

*@paramisFull是否为完整的日期数据,

*为true时,格式如"2000-03-0501:05:04"

*为false时,格式如"2000-03-05"

*@return符合要求的日期字符串

*/

functiongetSmpFormatDate(date,isFull){

varpattern="";

if(isFull==true||isFull==undefined){

pattern="yyyy-MM-ddhh:mm:ss";

}else{

pattern="yyyy-MM-dd";

}

returngetFormatDate(date,pattern);

}

/**

*转换当前日期对象为日期字符串

*@paramdate日期对象

*@paramisFull是否为完整的日期数据,

*为true时,格式如"2000-03-0501:05:04"

*为false时,格式如"2000-03-05"

*@return符合要求的日期字符串

*/

functiongetSmpFormatNowDate(isFull){

returngetSmpFormatDate(newDate(),isFull);

}

/**

*转换long值为日期字符串

*@paramllong值

*@paramisFull是否为完整的日期数据,

*为true时,格式如"2000-03-0501:05:04"

*为false时,格式如"2000-03-05"

*@return符合要求的日期字符串

*/

functiongetSmpFormatDateByLong(l,isFull){

returngetSmpFormatDate(newDate(l),isFull);

}

/**

*转换long值为日期字符串

*@paramllong值

*@parampattern格式字符串,例如:yyyy-MM-ddhh:mm:ss

*@return符合要求的日期字符串

*/

functiongetFormatDateByLong(l,pattern){

returngetFormatDate(newDate(l),pattern);

}

/**

*转换日期对象为日期字符串

*@paramllong值

*@parampattern格式字符串,例如:yyyy-MM-ddhh:mm:ss

*@return符合要求的日期字符串

*/

functiongetFormatDate(date,pattern){

if(date==undefined){

date=newDate();

}

if(pattern==undefined){

pattern="yyyy-MM-ddhh:mm:ss";

}

returndate.format(pattern);

}

//alert(getSmpFormatDateByLong(1279829423000,false));

双系统windows时间不准

出现这种情况的原因是由于两种系统在设定时间时均以主板CMOS中的时间为依据,却又使用不同的时间计算标准。具体来说:

Linux和苹果操作系统(UNIX变种)以当前主板CMOS时间做为国际协调时间(UTC),再根据系统设置的时区来最终确定当前系统时间。比如时区设置为UTC+8(北京时间)而当前CMOS时间为02:00,那么系统会将这两个时间相加,显示在桌面的当前系统时间为10:00。而Windows操作系统则直接把CMOS时间认定为当前显示时间,不根据时区转换。

* Windows把系统硬件时间当作本地时间(Local Time),即操作系统中显示的时间跟CMOS中显示的时间是一样的。

* Linux/Unix/Mac把CMOS时间当作UTC,操作系统中显示的时间是硬件时间经过换算得来的,比如说北京时间是UTC+8,则系统中显示时间是CMOS时间+8。

这样,当电脑中同时有多系统时,就出现了问题。假如你的Linux和Windows中设置的时区都为北京时间东八区,而你在Linux中把当前系统时间更改为10:00,则此时硬件中存储的实际是UTC时间02:00。这时你重启进入Windows后,你会发现windows系统中显示的时间是 02:00,比Linux中慢了八个小时。同理,你在Windows中更改或用网络同步了系统时间后,再到Linux中去看,系统就会快了8小时。那怎么来解决这种冲突呢?一种就是让Windows把CMOS时间当作UTC,与Linux/Unix/Mac保持一致。另一种就是让Linux/Unix/Mac把系统时间当作本地时间,与Windows保持一致。

一、下面先介绍修改windows的设置,(以Windows7 64-bit为例):

使用组合键Win+R打开运行窗口,输入regedit回车,找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation”,右键新建New> DWORD(32-bit) Value,命名为RealTimeIsUniversal,键值为1

相关内容