0
好的人,我在這裏與我假設是一個簡單的邏輯問題。基於郵政編碼的時區(非州)
我會先告訴你我的代碼(至少我認爲你需要)然後解釋問題。
Function GetTimeZone(ByVal state As String) As Integer
Dim TaxConnStr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ConfigurationManager.AppSettings("Database")
Dim dbConnection As OleDbConnection = New OleDbConnection(TaxConnStr)
Try
Dim queryString As String
queryString = "SELECT Top 1 Zips.State, Zips.TimeZone "
queryString += "FROM Zips "
queryString += "WHERE (((Zips.State)='" & state & "'));"
Dim dbCommand As OleDbCommand = New OleDbCommand
dbCommand.CommandText = queryString
dbCommand.Connection = dbConnection
Dim dataAdapter As OleDbDataAdapter = New OleDbDataAdapter
dataAdapter.SelectCommand = dbCommand
Dim dataSet As DataSet = New DataSet
dataAdapter.Fill(dataSet)
If dataSet.Tables(0).Rows.Count >= 1 Then
Return dataSet.Tables(0).Rows(0).Item("TimeZone")
Else
Return 0
End If
Catch ex As Exception
Console.WriteLine(ex.Message)
myLogger.Log(ex.Message)
Finally
dbConnection.Close()
End Try
end Function
好吧,我所要做的是找出基於不是國家(此代碼是如何得到它),但是郵政編碼的時區。這顯然是一些州(KY,TN,OK等)的B/C除以他們的時區。
所以我最終會喜歡這個功能來查看郵政編碼...找出郵政編碼是在哪個時區...然後返回時區。
如果不明顯。該信息正從中拉出的表名爲「Zips」。它由郵編,城市,州,縣,區號和時區等幾列組成。表中的時區是列只有與「5,6,7,8等」相對應的值。 5 =東部,6 =中央,等等。
感謝您的任何指導。
維護你自己的時區數據庫從來不是一個好主意......但是如果你這樣做 - 確保你不只有5,6,7,8 - 這只是一個標準的偏移量。您還需要知道夏令時是否適用。我認爲這是一個僅限美國的數據庫?如果沒有,你還有更多的方法來處理。 – 2013-03-16 16:24:01
要做的更好的事情是獲取郵政編碼質心的緯度/經度位置,並使用該位置獲取適用的時區。有大量的在線服務和數據庫可以兼得。 – 2013-03-16 16:25:01