PHP日期转换为JavaScript日期

3

我有一个 PHP 日期,并希望在 JavaScript 提示框中输出:

$day=15;
$month=8;
$year=2012;

$date_display = date("Y-m-d", mktime(0, 0, 0, $month, $day, $year));
echo $date_display; // 2012-08-15

那么,

<a href="#" onclick="give_date(<?=$date_display;?>)"><?=$day;?></a>

这是一个 JavaScript 函数:

<script>
function give_date(value){
alert (value);  
}
</script>

有趣的是,警告框告诉我“1989”,这相当于2012年减去8再减去15!我该怎么办?!

由于您使用了 date,所以这不应该有太大的影响,但总的来说,您在这里犯了一个错误,混淆了客户端和服务器端之间的区别。$date_display 的值是在服务器端计算的,而 onclick 是在客户端调用的。至于您的问题,请尝试转换为 String - Nir Alfasi
@alfasin:不,这不是真的。 - zerkms
@alfasin:关于“$date_display的值是在服务器端计算出来的”这件事,会让OP更加困惑,因为不清楚这里的“计算”是指使用'2012-08-15'字符串值进行初始化还是进行数学运算。其次,“至于你的问题,请尝试转换为字符串”---转换成什么字符串?在php中它已经是一个字符串了 - 没有意义,在js中 - 太晚了,所以也没有意义。 - zerkms
顺便提一下,最好使用 <?php echo $date_display; ?> 而不是 <?=$date_display;?>。不要使用 mktime,使用 time - uınbɐɥs
@Shaquin Trifonoff:“mktime用于将日期转换为毫秒” --- 不是的。mktime用于从日期部分创建Unix时间戳。 - zerkms
显示剩余4条评论
3个回答

3
现在你得到了这个代码:<a href="#" onclick="give_date(2012-08-15)">15</a>,所以它在浏览器中进行计算。
解决方案很简单 - 加上引号:
<a href="#" onclick="give_date('<?=$date_display;?>')"><?=$day;?></a>

然后你会得到:<a href="#" onclick="give_date('2012-08-15')">15</a>

1

您正在使客户端代码显示在页面加载时服务器日期的警报。

如果您想向用户显示当前时间,请使用以下内容:

HTML:

<a href="#" id="date">Please enable JavaScript.</a>

JavaScript:

<script type="text/javascript">
function show_date() {
    alert(new Date());  
}
window.onload = function() {
    document.getElementById('date').innerHTML = new Date().getDay();
};
document.getElementById('date').onclick = show_date;
</script>

0

如果你愿意的话,可以使用jQuery

<a href="#" id="<?php echo $date_display; ?>">Click to get date popup</a>

$(function(){

 $('a').click(function(){

       var dt = $(this).attr('id');
       alert(dt);
 });

});

1
“2012-08-05” 不是一个好的 id 候选项。我建议使用 data-date="..." 代替。 - zerkms
@zerkms 这里稍微有点好奇,为什么不呢? - asprin
嗯...但它满足了原帖作者的需求,对吧?我想这可以被忽略。 - asprin
1
“id” 应该以字母开头。这是标准定义“id”的要求的方式。你可以随心所欲,但标准就是标准。遵循标准是个好主意。 - zerkms

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接