首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP strtotime()与date.js parse()

PHP strtotime()与date.js parse()
EN

Stack Overflow用户
提问于 2012-02-03 05:32:50
回答 2查看 951关注 0票数 1

我有一个网站,用户可以在发送到服务器之前输入他们自己的日期。因此,在实际使用之前,我显然需要解析他们给我的内容,并将其转换为标准格式。所以我使用了PHP的strtotime()函数,它很容易接受输入。

但我也在网站上使用date.js,它的parse()函数也很好。在将其发送到服务器之前,我应该在用户输入上使用它吗?哪一个更好?

出于安全考虑,我会将strtotime()放在后端,但如果date.js更好,我会将其添加到客户端。

(为了澄清,我希望大多数日期格式都是美国的。但如果这种情况发生变化,任何可以简化这种过渡的事情都是首选。)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-03 05:38:53

只要您觉得strtotime()满足了您的需求,就没有理由在客户端对其进行更改。然而,strtotime()做了几个假设,你需要保持在顶部:

From the strtotime() documentation:

通过查看各个组件之间的分隔符,可以消除m/d/y或d-m-y格式中的

日期的歧义:如果分隔符是斜杠(/),则假定为美国的m/d/y;而如果分隔符是短划线(-)或点(.),则假定为欧洲的d-m-y格式。

如果您允许您的客户以他们选择的任何格式发送日期,上述情况可能会引起混淆。我刚刚在date.js中测试了日期5/1/125-1-12,它们都被解析为2012年5月1日。PHP会将两者解释为2012年5月1日和2005年1月12日(!)分别使用。

代码语言:javascript
复制
echo date("Y-M-n", strtotime("5/1/12"));
// 2012-May-5
echo date("Y-M-n", strtotime("5-1-12"));
// 2005-Jan-1 (whoops!)

但是,预先格式化日期有一些明显的好处,即输入的日期是有效的。将strtotime()放在后端还可以确保您不需要支持JavaScript的客户端来发送请求。您的PHP仍然可以作为web服务调用,等等,而客户端不需要是web浏览器。

票数 2
EN

Stack Overflow用户

发布于 2013-08-17 21:40:35

两者都有。

您绝对需要在PHP中验证日期,因为您的一个或多个用户可能禁用了Javascript。

Javascript验证很有用,因为您可以在输入控件中输入日期,在onblur处理程序中对其进行验证,然后将验证后的日期写回控件。因此,在用户键入出生日期2/5/01并离开控件后,日期将更改为2001年5月2日,用户不仅知道该日期被正确解释,而且strtotime()还获得了一个明确的值。

从UX的角度来看,您还可以使用更好的验证反馈。Javascript可以执行以下操作(这可能是众所周知的,但我花了一些时间才找到它)。在页面中放置一个元素,如

代码语言:javascript
复制
<div id="DobReply"></div>;

然后,验证出生日期的函数可以执行以下操作

代码语言:javascript
复制
document.getElementById("DobReply").innerHTML = "Current age is "+age; 

其中,年龄是根据输入的出生日期和今天的日期计算得出的变量。一旦用户离开控件,计算的年龄就会弹出,如果用户输入了当前年份(发生了这种情况),她可能会立即发现错误。

所以我也不会放弃datejs的验证。但是如果Javascript被禁用,所有这些都会丢失,你可能会得到无效的日期,奇怪格式的日期,或者其他任何东西。所以,如果你只能有一个,那就保留strtotime()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9120333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档