string - 在 Matlab 中将字符串日期转换为日期时间变量的问题
问题描述
我有一个名为的变量FOUNDATION_DATE
,其中包括以下字符串格式的日期观察:
'01/Jan/12'
''
''
''
'01/Jan/08'
''
'01/Jan/44'
''
''
'14/Oct/08'
''
''
'12/Jul/04'
'03/Aug/05'
'20/Apr/10'
'30/Dec/98'
'09/Apr/16'
'01/Jan/10'
'01/Dec/01'
'01/Jan/93'
我正在使用 Matlab 函数datetime
将上述观察结果转换为datetime
数据类型。代码是
datetime(FOUNDATION_DATE,'InputFormat','dd/MMM/yy')
它提供了以下结果:
01-Jan-2012
NaT
NaT
NaT
01-Jan-2008
NaT
01-Jan-2044
NaT
NaT
14-Oct-2008
NaT
NaT
12-Jul-2004
03-Aug-2005
20-Apr-2010
30-Dec-1998
09-Apr-2016
01-Jan-2010
01-Dec-2001
01-Jan-1993
虽然对于大多数情况,转换是正确进行的,但对于观察'01/Jan/44'
,随着年份的变化,情况并非如此2044
。这个问题出现在我的变量的许多其他日期观察中(这里只展示了一个小样本),而且很奇怪,这个问题出现在 1969 年之前的日期观察中。
有没有人有将这些字符串准确转换为datetime
变量的解决方案?任何解释为什么会发生这种情况?
解决方案
您需要该'PivotYear'
选项,它定义 2 位日期所指的 100 年日期范围:
datetime( '01/Jan/44', 'inputformat', 'dd/MMM/yy', 'pivotyear', 1930 )
所以这里的 100 年范围是 1930 - 2029
记录的默认值(因此不是很“奇怪”)是
year(datetime('now'))-50 % = 1969 at time of writing (2019)
推荐阅读
- javascript - Google Cloud Functions 部署:EROFS:只读文件系统
- xml - 如何使用 Groovy XmlParser 获取 XML 根元素属性,而无需对 XML 进行“双重解析”
- javascript - 在Javascript中搜索表格的多行和多列
- php - 只有工作日的 PHP Carbon 日期差异
- sql - 在两个条件下连接两个表,如果它无法连接到空白单元格的行
- windows - Windows 批处理脚本中的空间 (xcopy)
- html - 元素未显示并且 :hover 无法在 .svg 上工作
- python - AttributeError:类型对象“MyUser”没有属性“USERNAME_FIELD”
- django - 有没有办法用 Django 发送推送通知
- graph - 基于关键字的 OneDrive API 搜索仅提供部分信息,不提供有关页面详细信息的任何信息