javascript - 如何将 php date_diff 值转换为 javascript 整数?
问题描述
我正在尝试使用两个日期之间的差异来帮助我在HTML
canvas
. 我在其中生成一个日期PHP
并提取另一个存储在SQL
数据库中的日期
当我将所有内容都保留在PHP
echo'd 输出中时,这正是我所期望的。但是,当我json_encode
将输出(我希望是一个整数)用于在 上绘制我想要的形状时canvas
,会出现一个与 完全不同的数字javascript
。
我很确定它与json
编码有关......但我无法找到有关如何正确执行此操作的任何参考。
这是PHP
我用来抓取、格式化和创建日期差异输出的:
$sdt = new DateTime($row['sdate']);
$today = new DateTime('now');
$sdiff = date_diff($sdt, $today);
$sdelta = $sdiff->format("%a");
如果我将所有这些都保留在变量或PHP
变量中,我会得到预期的答案,即 34。echo
echo
json_encode
echo $sdelta;
结果 34
echo json_encode($sdelta);
结果为“34”;
echo json_decode($sdelta);
结果为34;
但是,当我将此值分配给javascript
变量并测试分配结果时:
var diffdt = <?php echo json_encode($sdelta); ?>;
alert(diffdt);
弹出窗口显示alert
199。
如果有人可以帮助我解决这个问题,我将永远感激不尽。
额外的信息...
- 列类型
sdate
为DATE
我正在执行的查询是获取数据是:
$stmt = $link->prepare("SELECT * FROM register WHERE id = ? "); $stmt->bind_param("i", $id); $stmt->execute(); $result = $stmt->get_result(); $num = $result->num_rows; $row = $result->fetch_assoc(); var_dump($row['sdate']);
- 行数为 1。
- vardump 结果为:字符串(10)“2019-09-27”
解决方案
必须使用我在这里使用的“Number(your_number)”方法,见底线:
<script type="text/javascript">
// To set two dates to two variables
var date1 = new Date("06/30/2019");
var date2 = new Date("07/30/2019");
// To calculate the time difference of two dates
var Difference_In_Time = date2.getTime() - date1.getTime();
// To calculate the no. of days between two dates
var Difference_In_Days = Difference_In_Time / (1000 * 3600 * 24);
console.log(Number(Difference_In_Days));
</script>
推荐阅读
- node.js - 如何在 React 中使用 Axios 显示错误
- php - 反转或隐藏输入复选框结果的 jQuery ajax
- amazon-web-services - AWS AppSync 与 Firebase 作为 OpenID Connect 提供商
- python - 将带时间的字符串插入固定长度的排序时间列表
- python - 如何在涉及等长字典列表的算术表达式中应用字典值?
- c# - NumericUpDown 拒绝值
- python - solve_ivp "ValueError: setting an array element with a sequence" 问题
- reactjs - 基于路由的 React 中隐藏元素
- unity3d - 超出着色器全局关键字的最大数量 (256),关键字 Unity
- typescript - 在 Svelte 应用程序上编译期间一切正常时,运行时出现未定义的模块错误