我的應用程序需要在一個GET參數的日期範圍。我認爲必須有一種將兩個Unix時間戳編碼成一個的天才方式,有效縮短URL參數。編碼兩臺Unix時間戳到一個
我知道兩個時間戳的簡單CSV會做的伎倆,但這裏的目的是爲了減少網址尺寸盡可能地。
PS:這也需要工作,如果只有一個日期(開始日期),在這種情況下,結束日期將被假定爲今天。
我的應用程序需要在一個GET參數的日期範圍。我認爲必須有一種將兩個Unix時間戳編碼成一個的天才方式,有效縮短URL參數。編碼兩臺Unix時間戳到一個
我知道兩個時間戳的簡單CSV會做的伎倆,但這裏的目的是爲了減少網址尺寸盡可能地。
PS:這也需要工作,如果只有一個日期(開始日期),在這種情況下,結束日期將被假定爲今天。
嗯,這裏有一些想法:
如果兩個時間戳可能是彼此接近,將它們存儲爲一對第一次和區別。例如,現在和明天,您將存儲1361666257,86400
。
儲存在十六進制中的時間戳(底座16)代替基體10;例如512960d1
如果時間戳始終是日期,那麼按照自紀元以來的天數(而不是秒數)除以86400並丟棄餘數來存儲它們。例如,今天是第15760天。
和/或結合所有這三種:3d90,1
我擴大了你的基地16的想法,並決定我的編碼與日期基地36。 – Druska 2013-02-24 01:41:19
如果你的目標是減少對URL的大小盡可能,你可以拿出自己的「時間戳」格式,選擇粒度和在您方便的時候抵消。
例如,如果你需要傳遞的日期通常是圍繞請求的當前日期,如果你只需要日期,而不是一天的時間,你可以使用的天前數,而不是1970年以來秒的數量,這是UNIX時間戳定義。
這裏是一個隨機的日期範圍看起來像UNIX時間戳以及與此變種:
Date range: 2012-09-21 to 2013-01-10
Timestamp: 1348178400_1357772400
Days-ago: 156_45
通知我用_
從的和到部分分開,因爲減號-
對於1970年之前使用UNIX時間戳或日期編碼中的日期的日期是必需的。
這只是一個例子。您應該根據您的應用需求提出自己的編碼(或不要)。例如,如果日期範圍通常較小,則可以將其編碼爲日期+差異。這種差異可能是幾天,幾個月,或整年...取決於您的需求。
嗯,什麼?我的意思是把它縮短是沒有問題的,但爲什麼這很重要? – Oliver 2013-02-24 00:38:13
由於良好的網址是好的設計 – Druska 2013-02-24 01:00:23