2015-06-02 101 views
2

在MATLAB中設置日期時間,日期字符串和日期時間格式時,有兩種不同的表示分鐘和月份的方式,分別爲M和m或m和M。具體來說,當您使用datestr時,它與使用datetime時不同。下面是一個例子,MATLAB中的多種日期格式

startdate='01/05/2015 12:35:22'; 
startdt=datetime(startdate,'InputFormat','dd/MM/yyyy HH:mm:ss'); 
startstr=datestr(startdt,'dd/mm/yyyy HH:MM:SS'); 

查看如何爲datestr我們用小寫m表示月份和日期時間,我們使用大寫M代表一個月。

爲什麼MATLAB具有適用於這些命令的不同日期格式?爲了在代碼中實現一致的日期格式,最好的方法是什麼?

+0

可能是ISO 8601 - http://en.wikipedia.org/wiki/ISO_8601或http://en.cppreference.com/w/cpp/chrono/c/strftime – doctorlove

+0

嗯,是的,這是一個投訴,但我的問題是「爲什麼他們在一個地區換了月,而在另一個地區換了M?」。我一直在爲datestr編寫代碼,然後進入凹槽併爲datetime編寫相同的格式,並破壞我的代碼。我猜如果我明白爲什麼它會阻止我這樣做。 – josh

+0

@doctorlove這並不能真正支持在任何地方使用小寫年份。我想如果有一個原因可能是模糊的。然而,這看起來似乎是一個抱怨而不是一個編程問題,所以我會把這個標記爲不清楚你問什麼。 – patrik

回答

4

MathWorks公司R2014b一個新的功能套件(基於圍繞datetime類)來處理的日期和時間,即旨在被用作顯着改善的替換較舊的功能,如datestrdatenumdatevec

舊功能的問題之一是它沒有使用標準格式字符串來描述日期和時間格式。新功能符合ISO 8601標準,正確無誤。它還對時區和區域設置,基於日曆的持續時間和納秒精度提供了適當的支持。

爲保持向後兼容性,舊功能仍然保留。有可能在未來的MATLAB版本中,它們可能逐漸被逐步淘汰。通常的過程是,對於幾個版本,他們會提出一個(可抑制的)警告,表明您可能希望修改代碼以使用更新的功能;然後幾個版本後,他們將被刪除(這將最終導致代碼仍然使用它們來錯誤)。

我會建議如果你正在編寫新的代碼,你只能堅持使用基於datetime的功能。如果您要修改現有代碼,請儘量保持您的選擇一致,但在適當的時候逐漸將代碼遷移到新功能。

+0

輝煌。這是我正在尋找的確切答案。謝謝。 – josh

1

這是一個非常普遍的問題MathWorks公司,以及一些許多MATLAB程序員抱怨:

Mathworks公司不斷變化一般的東西從一個版本到另一個

,這是特別非常麻煩,當例如你突然不得不面對區分大小寫(發生在2007年至2008年,我認爲?),或者當你突然在你的地塊中有新的高清色彩時,非常不同的OOP處理(第一次OOP是一場噩夢)等。

對你的提問:你提到的兩個函數基本上都是做同樣的事情,但是在非常不同的版本中引入。

datestr日期時間2014

  • 前2006年
  • 所以我quess doctorlove的評論是正確的,Mathworks公司改變了這種格式更類似於ISO-規範。即使在mathworks網站上,您也可以找到非常輕微的評論

    注意:datetime接受的字母標識符與datestr,datenum和datevec函數使用的不同。

相關問題