3
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 、コマンドをホットキーにマッピングして、エディターに昨日と明日の日付を挿入しました。

ここで何が間違っていますか?

4

1 に答える 1

3

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))}
于 2013-11-13T18:35:23.883 に答える