strftime(): bool(false)没有显示任何东西。

3

我希望在我的页面上以这种格式显示当前日期:22/02/2013 - 12:00 (日/月/年 - 小时)

我使用strftime("%d/%b/%G - %R", time())但是页面上没有显示任何内容。如果我执行

echo var_dump(strftime("%d/%b/%G - %R", time()))

它显示的是bool(false)。你知道我做错了什么吗?请注意不要删除html标签。
3个回答

7

来自strftime()文档

由于输出取决于底层C库,因此某些转换说明符不受支持。在Windows上,提供未知的转换说明符将导致5个E_WARNING消息,并返回FALSE。在其他操作系统上,您可能不会得到任何E_WARNING消息,并且输出可能包含未转换的转换说明符。

因此,您可能正在使用不受支持的格式参数。

注意:默认情况下,time()用于时间戳,因此如果需要该默认时间戳,则可以与其一起使用strftime()


@Jack 这取决于底层的 C 库,每个操作系统都不同。由于没有提供这些信息,我无法进一步详细说明... - Veger
仅适用于Windows系统:该函数在Windows实现中不支持%e修饰符。可以使用%#d修饰符来实现此值。下面的示例演示如何编写跨平台兼容的函数。%z和%Z修饰符都返回时区名称,而不是偏移量或缩写。 - ltdev
1
不仅如此,在同一手册页上还写着:“这意味着 %e、%T、%R 和 %D(以及可能的其他内容)- 以及1970年1月1日之前的日期 - 在Windows、一些Linux发行版和其他几个操作系统上无法使用。” - Marko D
是的,但也有说法是它取决于底层的C库...你最好的尝试方法是逐个删除修饰符,直到你的代码能够正常工作,从而找出哪个修饰符不起作用... - Veger

7

Windows 不支持 %G%R, 你应该分别使用 %Y%H:%M

strftime("%d/%b/%Y - %H:%M")

也可以根据本地时间设置时间吗?我该怎么做? - ltdev
1
@Lykos 你是指date_default_timezone_set()吗? - Ja͢ck
我需要更多的帮助。我有strftime在<p id="date">中,我想添加一些ajax。如何在我的jquery .load()函数中应用strftime函数?<script type="text/javascript" src="../scripts/jquery.js"></script> <script type="text/javascript"> $(document).ready(function() { $('#dateTime').load(???); }); </script> - ltdev
@Jack,这个问题是因为Windows不支持格式日期字符串,因此记录下不被支持的字符串是很恰当的。 - user2019515
@user2019515 除了在strftime()手册中明确提到使用%e之外,%G%R的使用方法可能会更难找到。 - Ja͢ck
显示剩余4条评论

0

试试这个:

echo date('d/m/Y - H:s');

如果需要的话,您可以像这样设置时区:
date_default_timezone_set('UTC');

1
date() 不考虑本地化。 - Ja͢ck
1
@OgunAcik 请不要通过添加额外的细节来修改其他用户的帖子,而是使用评论来指出这些额外的细节,这样原始发布者可以确定是否更新他的帖子(如果同意的话)。 - Veger
1
我同意并已经自己添加了更改,感谢@OgunAcik的建议,不过最好像Veger说的那样先在评论中提出建议!:) - Matt Cain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接