2013-02-24 19 views
0

我的應用程序需要在一個GET參數的日期範圍。我認爲必須有一種將兩個Unix時間戳編碼成一個的天才方式,有效縮短URL參數。編碼兩臺Unix時間戳到一個

我知道兩個時間戳的簡單CSV會做的伎倆,但這裏的目的是爲了減少網址尺寸盡​​可能地。

PS:這也需要工作,如果只有一個日期(開始日期),在這種情況下,結束日期將被假定爲今天。

+0

嗯,什麼?我的意思是把它縮短是沒有問題的,但爲什麼這很重要? – Oliver 2013-02-24 00:38:13

+0

由於良好的網址是好的設計 – Druska 2013-02-24 01:00:23

回答

1

嗯,這裏有一些想法:

  • 如果兩個時間戳可能是彼此接近,將它們存儲爲一對第一次和區別。例如,現在和明天,您將存儲1361666257,86400

  • 儲存在十六進制中的時間戳(底座16)代替基體10;例如512960d1

  • 如果時間戳始終是日期,那麼按照自紀元以來的天數(而不是秒數)除以86400並丟棄餘數來存儲它們。例如,今天是第15760天。

和/或結合所有這三種:3d90,1

+0

我擴大了你的基地16的想法,並決定我的編碼與日期基地36。 – Druska 2013-02-24 01:41:19

1

如果你的目標是減少對URL的大小盡可能,你可以拿出自己的「時間戳」格式,選擇粒度和在您方便的時候抵消。

例如,如果你需要傳遞的日期通常是圍繞請求的當前日期,如果你只需要日期,而不是一天的時間,你可以使用的天前數,而不是1970年以來秒的數量,這是UNIX時間戳定義。

這裏是一個隨機的日期範圍看起來像UNIX時間戳以及與此變種:

Date range: 2012-09-21 to 2013-01-10 
Timestamp: 1348178400_1357772400 
Days-ago: 156_45 

通知我用_從的部分分開,因爲減號-對於1970年之前使用UNIX時間戳或日期編碼中的日期的日期是必需的。

這只是一個例子。您應該根據您的應用需求提出自己的編碼(或不要)。例如,如果日期範圍通常較小,則可以將其編碼爲日期+差異。這種差異可能是幾天,幾個月,或整年...取決於您的需求。