Joomla!之门 arrow Joomla论坛
Narrow screen resolution Wide screen resolution default color green color orange color
如何设置 PHP strftime 日期格式?
Joomla! 中文论坛Joomla 1.5.x安装、升级与迁移 (版主: Evan)如何设置 PHP strftime 日期格式?
页: [1]
发送此话题打印
作者 话题:

如何设置 PHP strftime 日期格式?

 (阅读 5487 次)
0 会员 以及 1 访客 正在阅读本话题.
huangmc
捐赠会员
Newbie
*

声望: +0/-0
上次登录:2010-03-14, 19:04
注册于:2008-06-02, 15:28
帖子: 21


« 于: 2008-06-21, 21:25 »

各位老大,各位同学晚上好。

我新建一个菜单,菜单项的类型为“文章分类列表的版面”,也就是链接到显示一个分类中的所有文章,是列表形式。
然后右边第一个基本参数设置,日期格式我先留空,结果默认日期格式为“日月年”,如果要设置的话,要求PHP strftime 格式?
请教白老大,如何才能设为 如“2008-06-21” 或者“2008年06月21日”,甚至加上星期的格式呢??

另外,以前用1.0版本,点击进入一个文章后,最下面自动有一个 “BACK”(返回)的按钮,可以回到前一个访问的页面。现在系统没有自动加这个按钮了,怎么样找不到啊。老大指教一下。

注:我用的是JOOMLA 1.5.3英文版本,导入中文语言包后汉化的。

PHPtime.jpg
如何设置 PHP strftime 日期格式?
* PHPtime.jpg (27.94 KB, 383x306 - 已被阅读 945 次.)

* showtime.jpg (2.32 KB, 178x105 - 已被阅读 1389 次.)
« 最后编辑时间: 2008-06-21, 21:33 作者 huangmc » 已记录
白建鹏
Administrator
Hero Member
*****

声望: +28/-0
性别: 男
上次登录:今天 05:05
注册于:2006-11-09, 20:32
帖子: 6919



分享,是一种美德 !


个人网站 电子邮件
« 回复 #1 于: 2008-06-22, 07:54 »

对 strftime 函数最正宗的解释在 php.net,可惜还没有翻译过来。

我从 yesky 找到了一份中文的材料,转贴过来,方便大家查询:

引用
strftime
(PHP 3, PHP 4 )

strftime --  根据区域设置格式化本地时间/日期
说明
string strftime ( string format [, int timestamp])


返回用给定的格式字串对给出的 timestamp 进行格式输出后的字符串。如果没有给出时间戳则用当前的本地时间。月份和星期几以及其它和语言有关的字符串写法和用 setlocale() 设定的当前的区域有关。

格式字串能识别下列转换标记:


%a - 当前区域星期几的简写

%A - 当前区域星期几的全称

%b - 当前区域月份的简写

%B - 当前区域月份的全称

%c - 当前区域首选的日期时间表达

%C - 世纪值(年份除以 100 后取整,范围从 00 到 99)

%d - 月份中的第几天,十进制数字(范围从 01 到 31)

%D - 和 %m/%d/%y 一样

%e - 月份中的第几天,十进制数字,一位的数字前会加上一个空格(范围从 ' 1' 到 '31')

%g - 和 %G 一样,但是没有世纪

%G - 4 位数的年份,符合 ISO 星期数(参见 %V)。和 %V 的格式和值一样,只除了如果 ISO 星期数属于前一年或者后一年,则使用那一年。

%h - 和 %b 一样

%H - 24 小时制的十进制小时数(范围从 00 到 23)

%I - 12 小时制的十进制小时数(范围从 00 到 12)

%j - 年份中的第几天,十进制数(范围从 001 到 366)

%m - 十进制月份(范围从 01 到 12)

%M - 十进制分钟数

%n - 换行符

%p - 根据给定的时间值为 `am' 或 `pm',或者当前区域设置中的相应字符串

%r - 用 a.m. 和 p.m. 符号的时间

%R - 24 小时符号的时间

%S - 十进制秒数

%t - 制表符

%T - 当前时间,和 %H:%M:%S 一样

%u - 星期几的十进制数表达 [1,7],1 表示星期一


警告
尽管 ISO 9889:1999(当前的 C 标准)明确指出一周从星期一开始,但是 Sun Solaris 的一周似乎从星期天开始并作为 1。
 

%U - 本年的第几周,从第一周的第一个星期天作为第一天开始

%V - 本年第几周的 ISO 8601:1988 格式,范围从 01 到 53,第 1 周是本年第一个至少还有 4 天的星期,星期一作为每周的第一天。(用 %G 或者 %g 作为指定时间戳相应周数的年份组成。)

%W - 本年的第几周数,从第一周的第一个星期一作为第一天开始

%w - 星期中的第几天,星期天为 0

%x - 当前区域首选的时间表示法,不包括时间

%X - 当前区域首选的时间表示法,不包括日期

%y - 没有世纪数的十进制年份(范围从 00 到 99)

%Y - 包括世纪数的十进制年份

%Z - 时区名或缩写

%% - 文字上的 `%' 字符

注: 可能不是所有的转换标记都被 C 库文件支持,这种情况下 PHP 的 strftime() 也不支持。此外,不是所有的平台都支持负的时间戳,因此日期的范围可能限定在不早于 Unix 纪元。这意味着例如 %e, %T,%R 和 %D(可能更多)以及早于 Jan 1, 1970 的时间在 Windows,一些 Linux 发行版本,以及其它几个操作系统中无效。对于 Windows 系统,所支持的转换标记可在 MSDN 网站找到。

例子 1. strftime() 区域的例子

<?php
setlocale (LC_TIME, "C");
print (strftime ("%A in Finnish is "));
setlocale (LC_TIME, "fi_FI");
print (strftime ("%A, in French "));
setlocale (LC_TIME, "fr_FR");
print (strftime ("%A and in German "));
setlocale (LC_TIME, "de_DE");
print (strftime ("%A.\n"));
?> 
 
本例在你的系统中安装有各自的区域设置后才能工作。
注: %G 和 %V,如果数字编号系统未能充分理解,基于 ISO 8601:1988 的星期数可能得出未预期的结果。见上面的 %V 和以下的例子。

例子 2. ISO 8601:1988 week number example

<?php
/*     December 2002 / January 2003
ISOWk  M   Tu  W   Thu F   Sa  Su
----- ----------------------------
51     16  17  18  19  20  21  22
52     23  24  25  26  27  28  29
1      30  31   1   2   3   4   5
2       6   7   8   9  10  11  12
3      13  14  15  16  17  18  19   */

// Outputs: 12/28/2002 - %V,%G,%Y = 52,2002,2002
print "12/28/2002 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("12/28/2002")) . "\n";

// Outputs: 12/30/2002 - %V,%G,%Y = 1,2003,2002
print "12/30/2002 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("12/30/2002")) . "\n";

// Outputs: 1/3/2003 - %V,%G,%Y = 1,2003,2003
print "1/3/2003 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/3/2003")) . "\n";

// Outputs: 1/10/2003 - %V,%G,%Y = 2,2003,2003
print "1/10/2003 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/10/2003")) . "\n";



/*     December 2004 / January 2005
ISOWk  M   Tu  W   Thu F   Sa  Su
----- ----------------------------
51     13  14  15  16  17  18  19
52     20  21  22  23  24  25  26
53     27  28  29  30  31   1   2
1       3   4   5   6   7   8   9
2      10  11  12  13  14  15  16   */

// Outputs: 12/23/2004 - %V,%G,%Y = 52,2004,2004
print "12/23/2004 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("12/23/2004")) . "\n";

// Outputs: 12/31/2004 - %V,%G,%Y = 53,2004,2004
print "12/31/2004 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("12/31/2004")) . "\n";

// Outputs: 1/2/2005 - %V,%G,%Y = 53,2004,2005
print "1/2/2005 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/2/2005")) . "\n";

// Outputs: 1/3/2005 - %V,%G,%Y = 1,2005,2005
print "1/3/2005 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/3/2005")) . "\n";

?> 
 


参见 setlocale() 和 mktime() 以及 Open Group specification of strftime()。

不过,我在楼主所说的位置填写了对应代码后,前台的时间格式似乎没有变化,等我抽空再研究一下。

在 Joomla! 1.5 版本中,官方似乎取消了 Back 按钮。不过有人开发了第三方插件来显示这个按钮。
已记录

白建鹏
Administrator
Hero Member
*****

声望: +28/-0
性别: 男
上次登录:今天 05:05
注册于:2006-11-09, 20:32
帖子: 6919



分享,是一种美德 !


个人网站 电子邮件
« 回复 #2 于: 2008-06-22, 08:04 »

可以直接从语言文件中修改全站文章显示的默认时间格式。

打开 /language/zh-CN/zh-CN.ini 文件(繁体中文就打开 /language/zh-TW/zh-TW.ini ),找到“DATE_FORMAT_LC2=”这个变量(大约在第 11 行),把它的定义修改:

程序代码:
%Y-%m-%d         得到 2008-06-21
%Y-%m-%d  %H:%M  得到 2004-07-07 17:54
%Y-%m-%d  %A     得到 2008-06-21 周六

%Y年 %m月 %d日    得到 2008年 06月 06日

特别注意:
如果要加上中文的年、月、日,则必须在 % 符号之前留一个空格,否则就乱码。但是多了这个空格比较难看,而且6月会显示为“06月”,不爽。推荐使用 %Y-%m-%d 的简单格式。
已记录

huangmc
捐赠会员
Newbie
*

声望: +0/-0
上次登录:2010-03-14, 19:04
注册于:2008-06-02, 15:28
帖子: 21


« 回复 #3 于: 2008-06-22, 14:17 »

谢谢白大哥,小弟晚上试验一下。
不过说实话,JOOMLA还是对中文支持不够啊,不然这地方应该做得更加傻瓜化一点,直接给个下拉菜单选择就好了。回头小弟给JOOMLA官方写个意见反馈什么的,希望他们能改进些。
已记录
白建鹏
Administrator
Hero Member
*****

声望: +28/-0
性别: 男
上次登录:今天 05:05
注册于:2006-11-09, 20:32
帖子: 6919



分享,是一种美德 !


个人网站 电子邮件
« 回复 #4 于: 2008-06-23, 23:39 »

没错!我也希望做成下拉选单式的,这样更方便用户。可惜,很多开源作者总以为用户跟自己一样,是电脑天才,呵呵。

但愿到了 Joomla! 2.0 时代我们就彻底舒服了。
已记录

yawenzhongyuan
捐赠会员
Newbie
*

声望: +0/-0
上次登录:2010-03-05, 20:29
注册于:2009-07-22, 17:45
帖子: 24




电子邮件
« 回复 #5 于: 2009-08-19, 01:14 »

对我很有用!不过我的在“en-GB.ini”。
我的默认语言选择的“英语”,可我登陆的时候他总是显示汉语!
总之,现在用语言、以后用money谢谢你!
已记录

学习中......
白建鹏
Administrator
Hero Member
*****

声望: +28/-0
性别: 男
上次登录:今天 05:05
注册于:2006-11-09, 20:32
帖子: 6919



分享,是一种美德 !


个人网站 电子邮件
« 回复 #6 于: 2009-08-20, 19:27 »

没看懂 yawenzhongyuan 的问题,请详细描述一下。
已记录

yawenzhongyuan
捐赠会员
Newbie
*

声望: +0/-0
上次登录:2010-03-05, 20:29
注册于:2009-07-22, 17:45
帖子: 24




电子邮件
« 回复 #7 于: 2009-08-20, 21:56 »

我用的是joomla1.5,xampp,本地测试用的,我的问题就是:
我在后台选择的默认语言是英语,
我们进行登陆的时候,不是有 用户名:admin
                             密码:**************
                             语言:默认
登陆的时候就是上面的那样,可是登陆后的语言还是汉语!
为什么还是汉语啊?
————————————————————————————
————————————————————————————
其实我主要不是想问这个问题,这也不是个大问题。
我的主要目的是:对我有用的帖子必回,感谢一下!



已记录

学习中......
白建鹏
Administrator
Hero Member
*****

声望: +28/-0
性别: 男
上次登录:今天 05:05
注册于:2006-11-09, 20:32
帖子: 6919



分享,是一种美德 !


个人网站 电子邮件
« 回复 #8 于: 2009-08-20, 23:14 »

yawenzhongyuan 的问题与本话题无关。以后请另开话题发帖。

你在后台只设置了“前台”的默认语言是英文,没有将“后台”的语言设置为英文吧?
已记录

joyway717
捐赠会员
Newbie
*

声望: +0/-0
上次登录:2010-01-16, 19:02
注册于:2008-05-23, 21:05
帖子: 35




个人网站 电子邮件
« 回复 #9 于: 2009-11-12, 17:21 »

你在后台只设置了“前台”的默认语言是英文,没有将“后台”的语言设置为英文吧?

此话对我非常有用, 非常有用, 大家应该知道我们可以在控制面板的语言设置里调整前台和后台的默认语言,这样joomlafish才起作用。
谢谢谢谢
已记录

www.reuton.com rubber flooring manufacturer
页: [1]
发送此话题打印
跳到:  

Powered by SMF 1.1.11 | SMF © 2006, Simple Machines LLC | smf.cn
论坛所讨论的话题和语言不代表本站立场
Joomla Bridge by JoomlaHacks.com

Original Joomla Template design by RocketTheme ( Conversion by Bloc)