【问题标题】:Why "error: invalid escape sequence?"为什么“错误:无效的转义序列?”
【发布时间】:2012-08-28 14:30:26
【问题描述】:

根据valadoc

var now = new DateTime.now(new TimeZone.local());
var timestamp = now.format("\%F.\%T");

应将时间戳设置为“2012-08-28.09:51:06”。为什么在“F”和“T”上出现“错误:无效的转义序列”? valadoc 中的其他格式会导致相同的错误,而 now.to_string() 实际上是 "2012-08-28T09:51:06+0000"

编辑:也许嵌入式 linux 目标缺少一些东西?

编辑:测试代码here 在使用 glib 2.26.1 的项目中打印“(null)”。

【问题讨论】:

  • 只是一个半随机的猜测,但你试过"\\%F.\\%T""%F.%T"吗?
  • @NullUserException:是的,我做到了。两者都清除了构建错误,但在运行时返回“”而不是时间戳字符串。
  • 仅供参考,有一个new DateTime.now_local()
  • @nemequ:正如我所说,尝试过并没有导致构建错误但不返回格式化的日期字符串,只有“”。
  • 当我说“作品”时,我是认真的。我得到一个格式正确的字符串而不是空字符串。 fpaste.org/BQZ0 的测试程序产生类似于“2012-08-30.10:27:20”的内容。 AFAICT g_date_time_format 实现不依赖于 libc 中的任何特殊内容,因此结果应该是一致的。也许您正在使用带有错误的旧版本 glib?

标签: datetime embedded-linux glib vala


【解决方案1】:

正如 NullUserException 所提到的,您不应该包含反斜杠 - 这就是导致无效转义序列错误的原因。

删除反斜杠后它仍然不起作用的原因是 %T 格式说明符直到 2.30 周期才添加。相关的提交是414c8ce532c19fe65deb8dfb80222d0164be5cbe

您可以通过执行以下操作来解决它:

var timestamp = now.format ("%F.%H:%M:%S");

【讨论】:

  • 是的!就是这样。谢谢一百万。
猜你喜欢
  • 2018-06-18
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-13
相关资源
最近更新 更多