js怎么获得数据库里的时间,第1张

Js获取当前日期时间及其它操作

var myDate = new Date();

myDategetYear(); //获取当前年份(2位)

myDategetFullYear(); //获取完整的年份(4位,1970-)

myDategetMonth(); //获取当前月份(0-11,0代表1月)

myDategetDate(); //获取当前日(1-31)

myDategetDay(); //获取当前星期X(0-6,0代表星期天)

myDategetTime(); //获取当前时间(从197011开始的毫秒数)

myDategetHours(); //获取当前小时数(0-23)

myDategetMinutes(); //获取当前分钟数(0-59)

myDategetSeconds(); //获取当前秒数(0-59)

myDategetMilliseconds(); //获取当前毫秒数(0-999)

myDatetoLocaleDateString(); //获取当前日期

var mytime=myDatetoLocaleTimeString(); //获取当前时间

myDatetoLocaleString( ); //获取日期与时间

日期时间脚本库方法列表

DateprototypeisLeapYear 判断闰年

DateprototypeFormat 日期格式化

DateprototypeDateAdd 日期计算

DateprototypeDateDiff 比较日期差

DateprototypetoString 日期转字符串

DateprototypetoArray 日期分割为数组

DateprototypeDatePart 取日期的部分信息

DateprototypeMaxDayOfDate 取日期所在月的最大天数

DateprototypeWeekNumOfYear 判断日期所在年的第几周

StringToDate 字符串转日期型

IsValidDate 验证日期有效性

CheckDateTime 完整日期时间检查

daysBetween 日期天数差

js代码:

//---------------------------------------------------

// 判断闰年

//---------------------------------------------------

DateprototypeisLeapYear = function()

{

return (0==thisgetYear()%4&&((thisgetYear()%100!=0)||(thisgetYear()%400==0)));

}

//---------------------------------------------------

// 日期格式化

// 格式 YYYY/yyyy/YY/yy 表示年份

// MM/M 月份

// W/w 星期

// dd/DD/d/D 日期

// hh/HH/h/H 时间

// mm/m 分钟

// ss/SS/s/S 秒

//---------------------------------------------------

DateprototypeFormat = function(formatStr)

{

var str = formatStr;

var Week = ['日','一','二','三','四','五','六'];

str=strreplace(/yyyy|YYYY/,thisgetFullYear());

str=strreplace(/yy|YY/,(thisgetYear() % 100)>9(thisgetYear() % 100)toString():'0' + (thisgetYear() % 100));

str=strreplace(/MM/,thisgetMonth()>9thisgetMonth()toString():'0' + thisgetMonth());

str=strreplace(/M/g,thisgetMonth());

str=strreplace(/w|W/g,Week[thisgetDay()]);

str=strreplace(/dd|DD/,thisgetDate()>9thisgetDate()toString():'0' + thisgetDate());

str=strreplace(/d|D/g,thisgetDate());

str=strreplace(/hh|HH/,thisgetHours()>9thisgetHours()toString():'0' + thisgetHours());

str=strreplace(/h|H/g,thisgetHours());

str=strreplace(/mm/,thisgetMinutes()>9thisgetMinutes()toString():'0' + thisgetMinutes());

str=strreplace(/m/g,thisgetMinutes());

str=strreplace(/ss|SS/,thisgetSeconds()>9thisgetSeconds()toString():'0' + thisgetSeconds());

str=strreplace(/s|S/g,thisgetSeconds());

return str;

}

//+---------------------------------------------------

//| 求两个时间的天数差 日期格式为 YYYY-MM-dd

//+---------------------------------------------------

function daysBetween(DateOne,DateTwo)

{

var OneMonth = DateOnesubstring(5,DateOnelastIndexOf ('-'));

var OneDay = DateOnesubstring(DateOnelength,DateOnelastIndexOf ('-')+1);

var OneYear = DateOnesubstring(0,DateOneindexOf ('-'));

var TwoMonth = DateTwosubstring(5,DateTwolastIndexOf ('-'));

var TwoDay = DateTwosubstring(DateTwolength,DateTwolastIndexOf ('-')+1);

var TwoYear = DateTwosubstring(0,DateTwoindexOf ('-'));

var cha=((Dateparse(OneMonth+'/'+OneDay+'/'+OneYear)- Dateparse(TwoMonth+'/'+TwoDay+'/'+TwoYear))/86400000);

return Mathabs(cha);

}

//+---------------------------------------------------

//| 日期计算

//+---------------------------------------------------

DateprototypeDateAdd = function(strInterval, Number) {

var dtTmp = this;

switch (strInterval) {

case 's' :return new Date(Dateparse(dtTmp) + (1000 Number));

case 'n' :return new Date(Dateparse(dtTmp) + (60000 Number));

case 'h' :return new Date(Dateparse(dtTmp) + (3600000 Number));

case 'd' :return new Date(Dateparse(dtTmp) + (86400000 Number));

case 'w' :return new Date(Dateparse(dtTmp) + ((86400000 7) Number));

case 'q' :return new Date(dtTmpgetFullYear(), (dtTmpgetMonth()) +

Number3, dtTmpgetDate(), dtTmpgetHours(), dtTmpgetMinutes(),

dtTmpgetSeconds());

case 'm' :return new Date(dtTmpgetFullYear(), (dtTmpgetMonth()) +

Number, dtTmpgetDate(), dtTmpgetHours(), dtTmpgetMinutes(),

dtTmpgetSeconds());

case 'y' :return new Date((dtTmpgetFullYear() + Number),

dtTmpgetMonth(), dtTmpgetDate(), dtTmpgetHours(), dtTmpgetMinutes(),

dtTmpgetSeconds());

}

}

//+---------------------------------------------------

//| 比较日期差 dtEnd 格式为日期型或者有效日期格式字符串

//+---------------------------------------------------

DateprototypeDateDiff = function(strInterval, dtEnd) {

var dtStart = this;

if (typeof dtEnd == 'string' )//如果是字符串转换为日期型

{

dtEnd = StringToDate(dtEnd);

}

switch (strInterval) {

case 's' :return parseInt((dtEnd - dtStart) / 1000);

case 'n' :return parseInt((dtEnd - dtStart) / 60000);

case 'h' :return parseInt((dtEnd - dtStart) / 3600000);

case 'd' :return parseInt((dtEnd - dtStart) / 86400000);

case 'w' :return parseInt((dtEnd - dtStart) / (86400000 7));

case 'm' :return (dtEndgetMonth()+1)+((dtEndgetFullYear()-dtStartgetFullYear())12) - (dtStartgetMonth()+1);

case 'y' :return dtEndgetFullYear() - dtStartgetFullYear();

}

}

//+---------------------------------------------------

//| 日期输出字符串,重载了系统的toString方法

//+---------------------------------------------------

DateprototypetoString = function(showWeek)

{

var myDate= this;

var str = myDatetoLocaleDateString();

if (showWeek)

{

var Week = ['日','一','二','三','四','五','六'];

str += ' 星期' + Week[myDategetDay()];

}

return str;

}

//+---------------------------------------------------

//| 日期合法性验证

//| 格式为:YYYY-MM-DD或YYYY/MM/DD

//+---------------------------------------------------

function IsValidDate(DateStr)

{

var sDate=DateStrreplace(/(^\s+|\s+$)/g,''); //去两边空格;

if(sDate=='') return true;

//如果格式满足YYYY-(/)MM-(/)DD或YYYY-(/)M-(/)DD或YYYY-(/)M-(/)D或YYYY-(/)MM-(/)D就替换为''

//数据库中,合法日期可以是:YYYY-MM/DD(2003-3/21),数据库会自动转换为YYYY-MM-DD格式

var s = sDatereplace(/[\d]{ 4,4 }[\-/]{ 1 }[\d]{ 1,2 }[\-/]{ 1 }[\d]{ 1,2 }/g,'');

if (s=='') //说明格式满足YYYY-MM-DD或YYYY-M-DD或YYYY-M-D或YYYY-MM-D

{

var t=new Date(sDatereplace(/\-/g,'/'));

var ar = sDatesplit(/[-/:]/);

if(ar[0] != tgetYear() || ar[1] != tgetMonth()+1 || ar[2] != tgetDate())

{

//alert('错误的日期格式!格式为:YYYY-MM-DD或YYYY/MM/DD。注意闰年。');

return false;

}

}

else

{

//alert('错误的日期格式!格式为:YYYY-MM-DD或YYYY/MM/DD。注意闰年。');

return false;

}

return true;

}

//+---------------------------------------------------

//| 日期时间检查

//| 格式为:YYYY-MM-DD HH:MM:SS

//+---------------------------------------------------

function CheckDateTime(str)

{

var reg = /^(\d+)-(\d{ 1,2 })-(\d{ 1,2 }) (\d{ 1,2 }):(\d{ 1,2 }):(\d{ 1,2 })$/;

var r = strmatch(reg);

if(r==null)return false;

r[2]=r[2]-1;

var d= new Date(r[1],r[2],r[3],r[4],r[5],r[6]);

if(dgetFullYear()!=r[1])return false;

if(dgetMonth()!=r[2])return false;

if(dgetDate()!=r[3])return false;

if(dgetHours()!=r[4])return false;

if(dgetMinutes()!=r[5])return false;

if(dgetSeconds()!=r[6])return false;

return true;

}

//+---------------------------------------------------

//| 把日期分割成数组

//+---------------------------------------------------

DateprototypetoArray = function()

{

var myDate = this;

var myArray = Array();

myArray[0] = myDategetFullYear();

myArray[1] = myDategetMonth();

myArray[2] = myDategetDate();

myArray[3] = myDategetHours();

myArray[4] = myDategetMinutes();

myArray[5] = myDategetSeconds();

return myArray;

}

//+---------------------------------------------------

//| 取得日期数据信息

//| 参数 interval 表示数据类型

//| y 年 m月 d日 w星期 ww周 h时 n分 s秒

//+---------------------------------------------------

DateprototypeDatePart = function(interval)

{

var myDate = this;

var partStr='';

var Week = ['日','一','二','三','四','五','六'];

switch (interval)

{

case 'y' :partStr = myDategetFullYear();break;

case 'm' :partStr = myDategetMonth()+1;break;

case 'd' :partStr = myDategetDate();break;

case 'w' :partStr = Week[myDategetDay()];break;

case 'ww' :partStr = myDateWeekNumOfYear();break;

case 'h' :partStr = myDategetHours();break;

case 'n' :partStr = myDategetMinutes();break;

case 's' :partStr = myDategetSeconds();break;

}

return partStr;

}

服务器的时间肯定不可能与北京时间完全一致啊,比如服务器在英国,那么显示的时间就比北京时间晚8个小时,如果服务器在中国大陆,则时间基本上是与北京时间一致的(但也不能完全保证)。

如果你想让网站后台数据库储存当前时间,最好通过前端脚本把本地电脑时间传递给后台,而不要直接使用服务器的时间,因为这个时间是你不可控的(而本地电脑时间则是可控的)。

不是很懂,这是别人支的招,你看看有没有用:

1那就要使用AJAX,用JS调用服务器程序来获取时间!

2只能服务器把时间传到前台,前台获取。

3一秒读一次服务器时间不现实 可以通过服务器时间初始化个JS的时间对象 然后每次都基于服务器时间变动JS时间 如何

DateTimeNow 获取的是服务器时间,你在本地测试是获取你本机的时间。如果你不确定,帮程序上传到服务器,然后修改本地时间,访问服务器的程序你就可以看到获取的是服务器还是本地时间了。

而js的var d = new Date(); 获取的永远都是客服端时间。如果需要用js获取对应的服务器时间,可使用ajax获取当前页面中HEAD的Date属性,返回的是服务器时间。

首先,需要说明一下:使用JS获取的时间不是服务器时间,而是客户端时间;如果要显示服务器时间,需要将服务器时间传给JS代码使用,具体自己查找资料啦。这里只给出显示客户端时间的实现方法。 如下: 在网页里,你在页面的onload事件里添加一个函数showTime(); 然后,定义showTime()如下: function showTime(){ var today=new Date(); //当前时间。 // 以下获取年月日 date=todaygetDate(); month=todaygetMonth()+1; //月份是从0开始计算的。 if(month<=9) month="0"+month; year=todaygetYear(); var nowDate=year+'-'+month+'-'+date; // 以下获取时分秒。 var d, s=""; var c = ":"; s += todaygetHours() + c; s += todaygetMinutes() + c; s += todaygetSeconds() ; // s += todaygetMilliseconds(); //这个是获得微秒数,一般不用。 // 将整个结果连接起来,显示到合适的位置。以下假设你有一个id为timer的DIV或TD等。 documentgetElementById("timer")innerHTML = nowDate + " " + s; setTimeout(showTime,1000); // 具体语法,请参考各类相关文档。 }

第一步,当用户第一次浏览页面时,服务器首先获取当前时间并显示在页面上(比如:显示在ID为timebox span中)

第二步,设置一个每隔一秒就计算新的时间(新时间以服务器时间为初始值,然后每隔一秒累加一秒并生成新的时间)

第三步,显示第二步计算的时间

是不是很简单,总结成一句话就是:以服务器时间为初始值,然后在页面上自动每隔一秒就累加一秒生成新时间,这样就能保证与服务器时间同步了,误差基本在几秒内,应该没关系了,好了看一下实现的代码吧:

<span id="timebox">11:21:55</span> //第一次将服务器时间显示在这里

<script type="text/javascript">

$(function () {

var oTime = $("#timebox");

var ts = oTimetext()split(":", 3);

var tnums = [parseInt(ts[0]), parseInt(ts[1]), parseInt(ts[2])];

setInterval(function () {

tnums = getNextTimeNumber(tnums[0], tnums[1], tnums[2]);

showNewTime(tnums[0], tnums[1], tnums[2]);

}, 1000);

function showNewTime(h, m, s) {

var timeStr = ("0" + htoString())substr(-2) + ":"

+ ("0" + mtoString())substr(-2) + ":"

+ ("0" + stoString())substr(-2);

oTimetext(timeStr);

}

function getNextTimeNumber(h, m, s) {

if (++s == 60) {

s = 0;

}

if (s == 0) {

if (++m == 60) {

m = 0;

}

}

if (m == 0) {

if (++h == 24) {

h = 0;

}

}

return [h, m, s];

}

});

</script>

代码很简单在此就不多作说明(我上面只显示时分秒,大家也可以加上日期,加上日期可在当h==0时,直接从服务器获取一个日期或完整的时间,作为一次时间的校对),不懂的可以在下面评论,我会及时回复的,然后按照这种思路来实现一下同步倒计时,首先说明一下,什么是同步倒计时,就是类似秒杀一样,设置一个结束时间,然后计算当前时间与结束时间之间间隔,而且必需保证在不同的电脑、浏览器上显示的倒计时时间均相同,实现代码如下:

<!DOCTYPE html>

<html>

<head>

<title>同步倒计时</title>

<script type="text/javascript" src="jquery-144minjs"></script>

</head>

<body>

<span id="timebox">1天00时00分12秒</span> <!--假设:1天00时00分12秒是从服务器获取的倒计时数据-->

<script type="text/javascript">

$(function () {

var tid = setInterval(function () {

var oTimebox = $("#timebox");

var syTime = oTimeboxtext();

var totalSec = getTotalSecond(syTime) - 1;

if (totalSec >= 0) {

oTimeboxtext(getNewSyTime(totalSec));

} else {

clearInterval(tid);

}

}, 1000);

//根据剩余时间字符串计算出总秒数

function getTotalSecond(timestr) {

var reg = /\d+/g;

var timenums = new Array();

while ((r = regexec(timestr)) != null) {

timenumspush(parseInt(r));

}

var second = 0, i = 0;

if (timenumslength == 4) {

second += timenums[0] 24 3600;

i = 1;

}

second += timenums[i] 3600 + timenums[++i] 60 + timenums[++i];

return second;

}

//根据剩余秒数生成时间格式

function getNewSyTime(sec) {

var s = sec % 60;

sec = (sec - s) / 60; //min

var m = sec % 60;

sec = (sec - m) / 60; //hour

var h = sec % 24;

var d = (sec - h) / 24;//day

var syTimeStr = "";

if (d > 0) {

syTimeStr += dtoString() + "天";

}

syTimeStr += ("0" + htoString())substr(-2) + "时"

+ ("0" + mtoString())substr(-2) + "分"

+ ("0" + stoString())substr(-2) + "秒";

return syTimeStr;

}

});

</script>

</body>

</html>

为了保证倒计时的精确度,我采用了先将倒计时时间间隔统一计算成秒,然后减1秒再重新生成时间格式,当然也可以按照上面时间同步的例子,直接进行时间减少,方法很多,我这个不一定是最优的

不一致

JS属于在客户端执行的,所以获取的是访问者电脑的系统时间

Java后台是在服务器运行的,所以获取的是服务器的系统时间

除非这两台电脑的系统时间完全一致,否则绝对不同

不一样。

不同的设备,本地的系统时间是不一样的,假如你电脑设定的时间是9:00那么js获取的就是9:00但是如果此时别人的电脑时间是10:00在别人的电脑上js获取的时间就是10:00。

s是客服端脚本,是不能直接获取服务器端的时间的,除非你用asp,或者jsp,php,等写一个动态的js脚本。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » js怎么获得数据库里的时间

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情