好的,這是對這個問題的看法。 CASSANDRA-10000解決了Windows中日期格式設置的一些問題。但是,由於每個平臺都有自己的方式來跟蹤時區偏移量,因此很難讓cqlsh在Windows中工作,而不包括用於時區顯示的其他依賴項。因此選擇了阻力最小的路徑,現在所有平臺都以UTC顯示查詢的時間戳。
我打算創建一個JIRA票據來解決這個問題,併爲兩個環境獲得適當的時區顯示(希望)。
使用此修補AT您自行承擔
如果你覺得舒服嘗試它,這裏是我是如何解決這個我自己:
在$CASSANDRA_HOME/pylib/cqlshlib/formatting.py
,尋找strftime
方法定義。新的一個(如2.2.1)只包含兩行:
def strftime(time_format, seconds):
tzless_dt = datetime_from_timestamp(seconds)
return tzless_dt.replace(tzinfo=UTC()).strftime(time_format)
你可以清楚地看到UTC時區被強制在哪裏。基本上,只是註釋掉(或刪除)這些行,並用Cassandra的strftime
方法定義替換它們= < =(2.2.0 || 2.1.8)。如果你沒有的話,這裏是代碼:
def strftime(time_format, seconds):
local = time.localtime(seconds)
formatted = time.strftime(time_format, local)
if local.tm_isdst != 0:
offset = -time.altzone
else:
offset = -time.timezone
if formatted[-4:] != '0000' or time_format[-2:] != '%z' or offset == 0:
return formatted
# deal with %z on platforms where it isn't supported. see CASSANDRA-4746.
if offset < 0:
sign = '-'
else:
sign = '+'
hours, minutes = divmod(abs(offset)/60, 60)
return formatted[:-5] + sign + '{0:0=2}{1:0=2}'.format(hours, minutes)
我已經測試此代碼與上面的情況,但肯定不是一個詳盡的水平。就像我說的那樣,使用風險自負。但是這應該阻止你直到一個補丁被寫入來恢復這個功能。
編輯20161021
這是固定在CASSANDRA-10397爲2.2.6版本,3.0.4和3.4。
你正在運行哪個版本的Cassandra? 2.2.1偶然? – Aaron
嗨亞倫。是的,我正在運行2.2.1。我也試過版本2.1.9,我也可以在版本2.1.9上重現這個問題。這是一個錯誤? – srai
我這麼認爲。 Python格式化庫從上一個發行版發生了變化(考慮到Windows時間格式),並且TZ偏移量現在在Bash中爲零。我會在飛回家的時候看看它,爲它創建一個JIRA,並且(希望)會有一個補丁。 – Aaron