方法

自:2.26

声明 [源]

gchar*
g_date_time_format (
  GDateTime* datetime,
  const gchar* format
)

描述 [源]

创建一个表示请求的format的新分配字符串。

此函数理解的格式字符串是C99中指定的strftime()格式语言的子集。不支持DUW转换,也不支持E修饰符。然而,支持GNU扩展%k%l%sP,以及0_-修饰符。还支持Python扩展%f

strftime()不同,此函数始终产生一个UTF-8字符串,而不考虑当前的区域设置。请注意,许多格式的渲染是区域相关的,可能无法与strftime()的输出完全匹配。

以下格式说明符受支持

  • %a:根据当前区域设置的缩写星期名称
  • A:根据当前区域设置的完整星期名称
  • %b:根据当前区域设置的缩写月份名称
  • B:根据当前区域设置的完整月份名称
  • %c:当前区域设置的日期和时间首选表示
  • C:世纪数(年份/100)作为两位整数(00-99)
  • %d:月份天数,作为十进制数(范围01到31)
  • %e:月份天数,作为十进制数(范围1到31);个位数前面有一个数字空间(U+2007)
  • F:等同于`Y`-%m-%d`(ISO 8601日期格式)
  • %g:基于ISO 8601周年的最后两位作为十进制数(00-99)。与V%u配合使用效果良好。
  • G:基于ISO 8601周年的年份作为十进制数。与V%u配合使用效果良好。
  • %h:等同于%b
  • H:24小时制的小时作为十进制数(范围00到23)
  • I:12小时制的小时作为十进制数(范围01到12)
  • %j:年天数,作为十进制数(范围001到366)
  • %k:24小时制的小时作为十进制数(范围0到23);个位数前面有一个数字空间(U+2007)
  • %l:12小时制的小时作为十进制数(范围1到12);个位数前面有一个数字空间(U+2007)
  • %m:月份作为十进制数(范围01到12)
  • M:分钟作为十进制数(范围00到59)
  • %f:微秒作为十进制数(范围000000到999999)
  • %p:根据给定的时间值,为‘AM’或‘PM’,或当前地区相应的字符串。中午被视为‘PM’,午夜视为‘AM’。建议不要使用此格式说明符,因为许多地区没有AM/PM格式概念。请使用%cX代替。
  • P:类似于%p,但小写:‘am’、‘pm’或当前地区的相应字符串。建议不要使用此格式说明符,因为许多地区没有AM/PM格式概念。请使用%cX代替。
  • %r:时间的上午或下午表示法。建议不要使用此格式说明符,因为许多地区没有AM/PM格式概念。请使用%cX代替。
  • R:24小时制的时间表示法(H`:`M
  • %s:自纪元以来的秒数,即自1970-01-01 00:00:00 UTC以来
  • S:秒作为十进制数(范围00到60)
  • %t:一个制表符
  • T:带秒的24小时制时间表示法(H`:`M`:`S
  • %u:ISO 8601标准星期数作为十进制数,范围1到7,星期一为1。与GV配合使用效果良好。
  • V:当前年份ISO 8601标准周数作为十进制数,范围01到53,其中星期1是新年中包含至少4天的第一周。参见g_date_time_get_week_of_year()。与G%u配合使用效果良好。
  • %w:星期数作为十进制数,范围0到6,星期天为0。这不是ISO 8601标准格式——请使用%u代替。
  • %x:当前地区首选的日期表示法,不包含时间
  • X:当前地区首选的时间表示法,不包含日期
  • %y:年份作为十进制数,不带世纪
  • Y:年份作为十进制数,包括世纪
  • %z:从UTC偏移的时间区域(+hhmm
  • %:z:从UTC偏移的时间区域(+hh:mm)。这是gnulib strftime()的扩展。自:2.38
  • %::z:从UTC偏移的时间区域(+hh:mm:ss)。这是gnulib strftime()的扩展。自:2.38
  • %:::z: 以UTC偏移量表示时区,用:表示必要的精度(例如,-04+05:30)。这是gnulib strftime()的扩展。自:2.38
  • Z: 时区、名称或缩写
  • %%: 文字面量%字符

某些转换指定符可以通过在其前面放置一个或多个修饰符来修改。

以下修饰符支持许多数值转换

  • O: 如果当前的区域设置支持这些,则使用替代数字符号。
  • _: 用空格填充数值结果。这覆盖了指定符的默认填充。
  • -: 不填充数值结果。这覆盖了指定符的默认填充。
  • 0: 用零填充数值结果。这覆盖了指定符的默认填充。

以下修饰符支持许多字母转换

  • ^: 如果可能使用大写字母。这是gnulib strftime()的扩展。自:2.80
  • #: 如果可能使用相反的大小写。这是gnulib strftime()的扩展。自:2.80

此外,当与Bbh一起使用时,O产生月份名称的替代形式。在没有日期号(例如,独立存在)的情况下使用月份名称时应该使用替代形式。由于某些语言的语法规则(如波罗的海语、斯拉夫语、希腊语等),在一些语言中需要使用这种形式。对于其他语言则没有区别。OB是GNU和BSD strftime()扩展,预计将添加到未来POSIX规范中,%Ob%Oh是GNU strftime()扩展。自:2.56

自GLib 2.80以来,当使用E%cC%xX%yY一同,日期将以特定于区域设置的替代纪元表示法进行格式化。这通常用于泰国阳历或日本纪元名称等。

  • %Ec: 当前区域设置的首选日期和时间表示法,使用替代纪元表示法
  • EC: 纪元的名称
  • %Ex: 当前区域设置的优选日期表示法,不包含时间,使用替代纪元表示法
  • EX: 当前区域设置的优选时间表示法,不包含日期,使用替代纪元表示法
  • %Ey: 自EC指定纪元开始以来的年份
  • EY: 完全的替代年份表示法。

可用自:2.26

参数

格式

类型: const gchar*

一个有效的UTF-8字符串,包含的格式。

数据由方法调用者拥有。
该值是一个以NUL结尾的UTF-8字符串。

返回值

类型: gchar*

一个新的字符串,格式化为请求的格式,或者在发生错误(例如,当前区域设置不支持格式指定符)的情况下为NULL。该字符串应使用g_free()释放。

方法的调用者接管返回的数据,并对其负责释放。
返回值可以是NULL
该值是一个以NUL结尾的UTF-8字符串。