我試圖以mm/dd/yyyy格式存儲日期,以實現我嘗試下面的事情在mongoShellMongoDB的日期存儲在MM/DD/YYYY
dt=new Date(2012,01,01)
ISODate("2012-01-31T18:30:00Z")
這不是我希望的格式。我試圖將它作爲ISODate(「2012-01-01」)存儲起來,這樣我就可以在兩者之間使用,比從mongoDB中獲取我想要的數據的種類少。
我試圖以mm/dd/yyyy格式存儲日期,以實現我嘗試下面的事情在mongoShellMongoDB的日期存儲在MM/DD/YYYY
dt=new Date(2012,01,01)
ISODate("2012-01-31T18:30:00Z")
這不是我希望的格式。我試圖將它作爲ISODate(「2012-01-01」)存儲起來,這樣我就可以在兩者之間使用,比從mongoDB中獲取我想要的數據的種類少。
聽起來像你的問題是關於如何將您在Mongo中存儲的ISO日期轉換爲字符串。我敢肯定,你可以計算出Java的語法正確,但在蒙戈外殼,你可以這樣做只是這樣的:
> d=new Date(2012,01,01)
ISODate("2012-02-01T05:00:00Z")
> print (d.getFullYear()+"/"+d.getMonth()+"/"+d.getDate())
2012/1/1
但請注意,你回來,你傳遞給日期的數量,而不是數量反映這是一個月。爲了解決這個你可以使用d.toLocaleDateString()
> d.toLocaleDateString()
02/01/2012
這是因爲javascript日期函數取(返回)以0個月,你還需要確保你小心相對於UTC/GMT時區的時區。
一個可能的解決方案是在下面的格式存儲
{
year : 2016,
month: 1,
day: 1,
yymmdd : 20160001
}
{
year : 2015,
month: 10,
day: 20,
yymmdd : 20151020
}
年月月日日是
年乘以10000
月乘以100,並添加日期
所以月 - 1 2016將是2016x10000 + 0x100 +1 = 20160001
2015年11月-2015年將是2015x10000 + 10 * 100 + 25 = 20151025
等等
上述設計將使從0AD分揀到9999AD
日期是64位整數,因此,如果您使用的是YYYYMMDD樣式(如上)的32位整數,節省您的空間併爲您的目的服務
你自相矛盾:「我試圖以mm/dd/YYYY格式存儲日期」和「我試圖將它存儲爲ISODate(」2012-01-01「)」 - 是嗎? (以及爲什麼你要*將它存儲爲'mm/dd/YYYY')?當然,你不應該在意,只要你能夠正確地提取數據 - 如果ISO格式更有效率(對於比較而言,這將是非常有用的),那麼爲什麼不使用它呢? –
MongoDB中的日期在內部存儲爲UNIX時間戳;使用'Date'或'ISODate'(cc @JonSkeet)創建它們並不重要。您可以更改日期的格式,但在封面下是一樣的。請參閱:http://www.mongodb.org/display/DOCS/Dates – NullUserException
@NullUserException:嗯,這很好。我擔心Mongo會是其中一個數據庫,它在存儲級別上沒有日期/時間概念*,並且所有內容都只使用字符串。也就是說,我仍然認爲'mm/dd/yyyy'是一種奇怪的格式,可能會帶來潛在問題:) –