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/