好的,我正在尝试将javascript时间戳转换为php等效时间戳,我已经在stack上浏览了这里的帖子,以获得一个不错的答案,以及其他各种网站,所以这个问题是最后的努力,尽管我知道我可能会获得选票,但有人告诉我,这只是一个来自其他地方的欺骗问题。所以尽管如此。。
这是我迄今为止尝试的失败。请注意,我使用的是jQuery,没有冲突,因此是j
而不是$
var yr = j('#time_year :selected').val();//year
var mn = j('#time_month :selected').val();//month
var dy = j('#time_day :selected').val();//day
var hr = j('#time_hour :selected').val();//hour
var min = j('#time_minute :selected').val();//minute
var sc = j('#time_second :selected').val();//second
if(j('#time_ampm :selected').val() == 12 && j('#time_hour :selected').val() < 12){hr = j('#time_hour :selected').val()+12;}
if(j('#time_ampm :selected').val() == 0 && j('#time_hour :selected').val() == 12){hr = 0;}
var theDate = new Date(yr, mn, dy, hr, min, sc).getTime();
setTimeStamps(theDate);
j('#timestamp_now_js').html(" "+theTime);
j('#timestamp_now_php').html(" "+Math.round(theTime / 1000));
顶部的选择值基于Mozilla.org日期参考,使用0-nn进行描述。作为上午/下午,if else本质上是指在选择的时间上增加12小时,因为网站上显示的时间是12小时格式。Javascript使用24小时。如果选择am并使用12,它也会将12转换为0,以匹配24小时格式的概念。
目前似乎正在发生的事情是,尽管它看起来很有效,但当我运行通过php date()
函数给出的时间戳时,它显示的日期大约是一个月2周零几天,这是我正在测试的,相当于现在的
我会创建一个包含html的jsFiddle,但我使用php来生成我的选择框。因此,如果你想看看我"活"了什么,那就去http://7pz.net/timestamps.php因为这就是我测试这个概念的地方。
Date
对象中,月份范围是0-11,而不是1-12。这是"月份"的部分。试试这个:
var mn = j('#time_month :selected').val() - 1; //month
或者更好的是,生成值范围从0到11的<option>
s。
另外,这个声明:
hr = j('#time_hour :selected').val()+12;
请记住,j('#time_hour :selected').val()
是字符串,而不是数字,因此必须在添加12之前对其进行转换,否则会得到类似"0412"
的内容。您正在创建一个小时计数设置为412的日期,即17天4小时。17天是天数的加法。
这样修复:
hr = +j('#time_hour :selected').val() + 12;
我使用了加号一元运算符。
(附言:从可读性和jQuery对象缓存开始,代码还有很大的改进空间。在习惯一些糟糕的做法之前,需要花一些时间来提高你的Javascript编码技能。)