我公司的网站上有一个页面,其中包含开始时间的文本输入字段。现在他们需要我将表单转换为使用时代选择。因为到目前为止,插入数据库中的时间来自文本输入,所以数据库中的行没有共享时间格式约定。
例如:
mysql> SELECT classtime FROM classes LIMIT 10;
+-----------+
| classtime |
+-----------+
| 3PM |
| 9:30am |
| 9:00am |
| 9:30am |
| 3:00pm |
| 10:00am |
| 3:00 |
| 10:30 |
| 11:30 |
| 9 |
+-----------+
10 rows in set (0.02 sec)
这些只是大约 45,000 行中的 10 行。
我正在尝试编写处理逻辑来显示原始数据以及新的限制格式数据。显然,我需要编写一个条件来区分两者,但我似乎想不出一个好方法来解决它。由于新数据在插入数据库之前将使用 strtotime()
进行转换,因此我最初的想法是编写一个条件来检查从数据库检索的数据是否为数字,然后相应地显示.
唯一的问题是许多行已经包含带有数字格式时间的时间字段:
mysql> SELECT COUNT(*) FROM classes WHERE classtime REGEXP '^[0-9]*$';
+----------+
| count(*) |
+----------+
| 273 |
+----------+
1 row in set (0.07 sec)
如您所见,此方法行不通。有人有什么建议吗?提前致谢。
编辑(附加信息): 许多字段还包含以下值:“12:00 PM - 1:00 PM”或“3 PM 至 4 PM”等。
最佳答案
您可以使用 PHP 中的 strtotime() 函数来转换其中的大部分。
$new_time = date('h:i', strtotime($old_time));
当然,“h:i”可以是您想要的任何格式。
关于php - 处理格式错误的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21026038/