不确定代码是什么
$date = strtotime("%b %d, %Y", $datedata);
$time = strtotime("%I:%M:%S %p", $datedata);
我从数据库获取的时间是1298747601
,是$ datedata
我在脚本的顶部有date_default_timezone_set('America/Los_Angeles');
。
答案 0 :(得分:4)
使用strftime()或date(),而不是strtotime()。 Strtotime用于格式化文本日期,而不是时间戳。
最好在数据库中使用DATETIME数据类型,而不是包含时间戳的int。使用DATETIME意味着更容易使用日期进行计算,您可以直接在查询中设置日期格式。
答案 1 :(得分:1)
strtotime()用于将字符串转换为$timestamp = strtotime("1:33 PM EST Next Friday");
。
你想要date()
,它采用格式字符串和时间戳来创建格式化的日期时间字符串,如果没有传递时间戳,则使用当前时间(来自time()
),如{{1这将产生类似“美国东部时间下午1点33分,2011年3月4日”的内容。此外,请注意,如果您想要格式化的单词,如“1月23日”,并且单词中的字母也是日期格式字符,在这种情况下,'of'中的'o'是ISO-8601年数字格式选项,您必须使用\ {斜杠date("h:i:s A T, M jS, Y", $timestamp)
转义它。由于f不是格式化选项,因此不需要对其进行转义,但如果确实如此,那么它将是"jS \of F"
还有一个DateTime对象,它内置于更新的PHP版本中,您可以查看。
我不同意Ray,最好在SQL中存储DateTime数据类型而不是整数时间戳。它们大致相同。您仍然可以通过查找大于X时间戳且小于Y时间戳的数字来搜索数据库中的日期范围,并且,作为一个加号,您从数据库获得的所有内容都已经采用PHP可以轻松使用的时间戳格式无需将其转换为适当的时间戳。