python - sublimetext 中的 timedelta 不起作用

标签 python datetime sublimetext2 sublimetext timedelta

import datetime, getpass from datetime 
import timedelta import sublime, sublime_plugin

class TommorowCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        self.view.run_command("insert_snippet", { "contents": "%s" %  datetime.date.today() + datetime.timedelta(days=1) } )

class YesterdayCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        self.view.run_command("insert_snippet", { "contents": "%s" %  datetime.date.today() - datetime.timedelta(days=1) } )

我已经将上面的代码保存为time.py 并将命令映射到热键以在编辑器中插入昨天和明天的日期。

我在这里做错了什么?

最佳答案

您需要添加括号以将 datetime 算法组合在一起:

{"contents": "%s" % (datetime.date.today() + datetime.timedelta(days=1))}

因为 + 运算符的优先级低于 % 运算符:

>>> "%s" % datetime.date.today() + datetime.timedelta(days=1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'datetime.timedelta' objects
>>> "%s" % (datetime.date.today() + datetime.timedelta(days=1))
'2013-11-14'

在第一种形式中,Python 评估 "%s"% datetime.date.today() 首先 然后你最终添加一个字符串和一个 timedelta() 对象。

可以在这里使用str():

{"contents": str(datetime.date.today() + datetime.timedelta(days=1))}

关于python - sublimetext 中的 timedelta 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19961608/

相关文章:

python - 找到一个容易取出sympy结果的

python - 将手动安装的 python 库集成到系统中?

Java LocalDateTime与mybatis的转换

jquery - 更改内联 SVG 的描边颜色

python - 谷歌云虚拟机 - 安装 openCV

python - Google Cloud Platform 配额监控(警报)

datetime - Java 8时间API : how to parse string of format “mm:ss” to Duration?

sql - Sql server 2008R2查询日期时间的方法

sublimetext2 - Sublime Text - 忽略特定文件类型的选项卡设置

sublimetext2 - 更改 Sublime Text 中 "Goto anything"的默认行为