首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >简单的生日系统(PHP / MySQL)有问题

简单的生日系统(PHP / MySQL)有问题
EN

Stack Overflow用户
提问于 2016-09-08 07:42:49
回答 2查看 87关注 0票数 0

当数据库中存在冲突的日期系统时,当发生这种情况时,会导致PHP中的混乱。例如,如果数据库中的部分日期包含了2016年1月1日的日期,但在另一个时间点上却包含了2016年1月1日的日期,那么日期系统似乎就会崩溃。在适当的环境中,我认为这应该是划时代的,但在这种情况下,情况并非如此。

下面的代码很混乱,也许我想得太多了。但这就是我所拥有的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    /*
    *
    * Dates ($dob) can appear as followed:
    * 01-30-2016 | 1-30-2016 | 01-01-2016 | 01/30/2016 or any combination
    *
    */

    $chpos = 0;         // Define Character Position Variable
    $replace = false;   // Should we replace the 0 after the first dash?

    // If the date uses this format: 01/02/2016 then replace the / with - so it looks like 01-02-2016
    $dob = preg_replace('/\s+/', '-', $dob);

    // Let's find out if the dash occurs on the 3rd character or 4th. We do this so we can replace the 0 in 2-02-2016
    // 01-34-6789 *String Array positions* 0-23-5678
    if(substr($dob, 0, 3) == 0 && substr($dob, 0, 0) == 0){
        $chpos = 3;
        $replace == true;
    } else if (substr($dob, 0, 0) != 0 && substr($dob, 0, 2) == 0){
        $chpos = 2;
        $replace == true;
    } else {
        $replace == false;
    }

    // Let's replace the 0 after the first dash if necessary
    if($replace == true){
        $dob = substr_replace($dob, '', $chpos);
    }

    // Let's replace the 0 from the beginning if necessary
    if(substr($dob, 0, 1 ) == 0){
       $dob = substr( $dob, 1 );
    }

    // Let's convert it to a usable date object       
    $birthday = new DateTime($dob);

    // Now let's compare the time from now to when the birthdate happened
    $interval = $birthday->diff(new DateTime);

    // Return the data over
    return $interval->y;

代码的问题与当它替换事物左边的0时有关。我可以发誓代码应该工作,但也许我做了一个错误,只是看不到它?我不知道,但根本没用。其信息是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 Uncaught exception 'Exception' with message 'DateTime::__construct(): Failed to parse time string (2-17-1994) at position 0 (2): Unexpected character'

参考的行是:$birthday =新的DateTime($dob);

我的问题是:

  • 当日期系统有前导零时,为什么它会崩溃?
  • 为什么只解析日期就这么复杂?
  • 我是错过了什么,还是应该这么困难?
  • 我是不是想太多了?

谢谢您抽时间见我!

EN

回答 2

Stack Overflow用户

发布于 2016-09-08 07:50:29

忽略数据清理的问题(道布不应该以不同的格式进入数据库;使用unix时间戳是一个更好的选择).为什么不做以下几件事;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$timedob = strtotime($dob);

$birthday = date('Y-m-d',$timedob);

strtotime接受任何字符串并将其转换为unix时间戳。然后,date函数将unix时间戳转换为所需的输出格式。

请注意,strtotime将输入解释如下;如果月、日、年用斜杠“/”分隔,则假定日期为美国的m/d/y格式。如果它看到连字符或句点(-或.),则假定日期为欧洲d格式。

票数 0
EN

Stack Overflow用户

发布于 2016-09-08 07:54:52

在php中解析日期字符串是非常容易的,它花费了非常长的时间来最好地使用像strtottime这样的函数来解释字符串。http://php.net/manual/en/function.strtotime.php

您遇到的问题是,您应该将数据库中的日期存储为数据库日期或日期时间格式(或数据库的任何等效格式)。在尝试将它们输入数据库之前,应该先进行验证,以及测试任何数据库写入都不会因为格式糟糕的日期结构而被拒绝。在转换到输出日期时,还应该进行进一步的验证。

很长一段时间以来,我不得不像您在这里所做的那样手动操作日期字符串,当然没有必要这样做。特别是由于日期选择器非常常见,在发送之前也会通过js格式化日期浏览器端。(这当然不能消除服务器端验证的需要。)

如果我是您,我将编写一个简短的脚本,将您的所有日期转换为数据库的适当日期格式,并将该数据库列的格式更改为日期格式。然后,将试图将字符串作为日期写入应用程序中数据库的任何位置进行地址处理。在结构良好的应用程序中,这应该只在一个模型函数中完成,所以不应该花费太长时间。

正确执行此操作的最后一个好处是,您现在可以轻松地生成报表或查询结果,例如在此之前发生的每个事件,日期或两个日期之间,或星期二,等等。

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

https://stackoverflow.com/questions/39395206

复制
相关文章
简单的生日html
以下是一个简单的生日祝福HTML代码: html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Happy Birthday</title> <style type="text/css"> body { font-family: Arial; } .container { width: 300px; padding: 16px 48px; background-color: white; margin: 100px auto 60px; border: 1px solid black; box-shadow: 8px 10px 5px #ccc; display: flex; justify-content: center; align-items: center; } .card1 { position: relative; top: -32px; left: 50%; transform: translate(-100%); opacity: 0; transition: opacity 1s ease-in-out; } .card1:before { content: "XXXXXX"; font-size: 36px
腾龙
2023/03/22
1.2K0
反直觉的「生日悖论」问题
生日悖论是由这样一个问题引出的:一个屋子里需要有多少人,才能使得存在至少两个人生日是同一天的概率达到 50%?
五分钟学算法
2019/09/03
9710
反直觉的「生日悖论」问题
SQL生日问题排查及调整
在发现部分数据库中的生日数据与导入表实际上是不一致的错误,通过怎么样的方式来实现查询并修正呢? 因为我们部分数据日与月相反,我们想要通过导入前的那张招生表来查出差别。 实际操作中,Excel无法完美识别出日期,导致无法对比。
繁华是客
2023/03/03
2700
如何有逻辑的,简单清晰的回应问题
分享一个回答问题的小技巧。作为咨询顾问,有条理的回答别人的问题是基本功。毕竟卖的就是服务,又没有多少选择客户的自由。碰到各种类型的问题,上到九天揽月,下到五洋捉鳖,都得认真回复。时间长了,我和几个老头子别总结出一套简单的应对方法。分三步,很容易新人上手。
接地气的陈老师
2019/12/09
6700
Go 语言实现 猜生日问题
猜生日问题: 小明对生日十分看重,因为他可以得到祝福,可以和朋友亲人一起分享快乐,可以为自己的人生做一次总结,并且...能够收到好多礼物! 不过小明是个神秘的人,不会轻易告诉你他的生日,现在他想到一个办法,让你去猜他的生日是哪一天。 小明会告诉你如下三个信息: 1. 出生月份和出生日子的最大公约数; 2. 出生月份和出生日子的最小公倍数; 3. 出生年份; 现在要求你猜出小明的生日。 Input 第一行输入一个正整数T,表示总共有T组册数数据(T <= 200); 对于每组数据依次输入三个数x,y
李海彬
2018/03/19
8160
php+mysql+js编写的统计系统
按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
逍遥子大表哥
2021/12/17
1.6K0
php+mysql+js编写的统计系统
php基础编程-php连接mysql数据库-mysqli的简单使用
很多php小白在学习完php基础后,或多或少要接触到数据库的使用。而mysql数据库是你最好的选择,本文就mysql来为大家介绍php如何连接到数据库。 PHP MySQLi = PHP MySQL
学长冷月
2020/08/02
5.2K0
简单理解 PHP 框架可能产生的安全问题
前几天看到某大牛对 PbootCMS 的代码审计,突然明白了底层逻辑对 cms 审计的重要性
信安之路
2020/04/16
7310
PHP学习笔记(3)--Mysql部分简单命令
1.select  user();查看当前用户。 2.select version();查看当前数据库软件版本。 3.select current_date ;查看当前日期。 4.\c ;取消之前输入内容。 5.Mysql中提示符并简述它们所表示的mysql的状态: 提示符 含义 mysql> 准备好接受新命令。 -> 等待多行命令的下一行。 '> 等待下一行,等待以单引号(“'”)开始的字符串的结束。 "> 等待下一行,等待以双引号(“"”)开始的字符串的结束。 `> 等待下一行,等待以反斜点(‘`
耕耘实录
2018/12/20
4490
用随机数模拟生日悖论问题
生日“悖论”其实并不是悖论,它是说在一个人数超过23人的集体中,至少有两个人生日在同一天的概率会大于0.5。因为这个理论上的概率与人们的直觉不符,才会被称为“悖论”。
fem178
2019/09/02
1.2K0
停止MySQL服务hang的问题简单分析(一)
写第一篇,意味着还有第二篇的内容,这个也是自己今天偶然发现的问题。同事之前碰到了一个MySQL服务不断重启的问题,究其原因,其实倒还合理,今天的这个问题比较纠结,看起来好像没有直接的联系,问题算是比较诡异。 我简单复现下这个问题,我在5.7.19的版本中做了测试,可以复现。 首先搭建一主两从的测试环境,使用sandbox或者是我自己写的shell版本也可以,具体可以参考:https://github.com/jeanron100/mysql_slaves 我配置的环境如下,端口分别为10010
jeanron100
2018/03/22
1.6K0
停止MySQL服务hang的问题简单分析(一)
怎样的监控,才真正说明系统有问题?
监控不告警,系统就一定没有问题么?怎样的监控,才真正说明系统有问题?今天和大伙聊聊多维度立体化监控。
架构师之路
2020/12/14
6550
MySQL查询:EHR中某时间范围过生日的员工
2、页面渲染的时候,默认出现近七天内要过生日的人。并发邮件提醒(发邮件提醒不在这里完成,是在其他模块,这里只描述如何查询生日的人)。
赵腰静
2018/12/29
3.2K0
MySQL查询:EHR中某时间范围过生日的员工
基于mysql的简单图书管理系统_图书管理系统
因为这两天要做数据库课设但是本人又很菜就做了一个简单的系统,简单的实现了增删改查,数据库用的是mysql,但是数据库的权限功能都没有实现,就是程序比较简陋,新手程序员可以参考一下~
全栈程序员站长
2022/11/04
2.9K1
基于mysql的简单图书管理系统_图书管理系统
PHP实现简单的学生信息管理系统(web版)
学了php的一些基础,包括HTML,php,pdo,mysql操作等,一直都没有将它们有机结合。最近写了一个简单的网页版学生信息管理系统,前台用HTML,脚本用到了JavaScript和PHP,数据库用到了MySQL。麻雀虽小,五脏俱全。算是对这些知识的一次总结吧。
于果
2021/08/25
8K3
php结合mysql制作小型图书查询系统
首先声明本文不是高手教程,最近刚自学了php,总觉得还是需要做点什么来加深掌握度。所以此博文,是一边做一边记录。
十四君
2019/11/28
1.3K0
点击加载更多

相似问题

简单的PHP/MySQL系统

11

简单的php/mysql问题

13

更新问题与创建简单的Php,MySql投票系统

12

PHP MYSQL简单搜索问题

10

简单登录系统spa/php/mysql/jquery

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文