罗兰在MATLAB的艺术

把想法变成MATLAB

创建日期列表,走了一个月

需要使用某种模式创建一个向量的日期吗?也许这些将被用作边缘参数柱状图,每一个月。

的最好方法是创建一个datetime数组的每个元素是第一个月?和“最佳”甚至是什么意思?-键盘,最少最少的函数调用,可读性最强,最灵活、最易于维护,等。假设我想产生这样的:

2018 - 1月- 01,2018 - 2月1日2018 - mar - 01,……

事实上,有很多合适的方法。这里有一些。

内容

简单地使用datetime

只使用datetime并指定本月向量。这是

1:12 mydates1 = datetime(2018年,1)
mydates1 = 1×12 datetime列数组1到5 01 - 1月- 2018年01 - 3月- 2018年2月- 2018年01 - 01 - 4月- 2018年01 - 2018年5月,列6到10 01 - 2018年6月- 2018年1 - 7月1日- 8月- 2018年01 - 2018年9月- 2018年10月01 - -列11到12 01 - 11月- 2018年01 - 12月- 2018

当我,我可以找到在每个月的天数,使用eomday

numDays = eomday(年(mydates1)月(mydates1));栏(mydates1 numDays)

如果月跨年呢?

如果跨年,几个月你可以相当简洁calmonths

mydates2 = datetime (2017、1、1): calmonths (1): datetime (2018、7、1)
mydates2 = 1×19 datetime列数组1到5 01 - 1月- 2017年01 - 3月- 2017年2月- 2017年01 - 01 - 4月- 2017年01 - 2017年5月,列6到10 01 - 2017年6月- 2017年1 - 7月1日- 8月- 2017年10月01 - 9月- 2017年01 - 2017列11到15 01 - 11月- 2017年01 - 12月- 2017年01 - 1月- 2018年01 - 3月- 2018年2月- 2018年01 - 16通过19列01 - 4月- 2018年01 - 5月- 2018年01 - 2018年6月- 2018年1 - 7月

此外,您可以超过12个月datetime仍然像预期的那样工作,不需要calmonths

mydates3 = datetime(2018年,桥,1);

7:18 mydates4 = datetime(2017年,1)
mydates4 = 1×12 datetime列数组1到5 01 - 7月- 2017年1 - 8月- 2017年1 - 9月- 2017年01 - 2017年10月- 2017年11月01 - -列6到10 01 - 12月- 2017年01 - 1月- 2018年01 - 3月- 2018年2月- 2018年01 - 01 - 4月- 2018列11到12 01 - 2018年5月- 01 - jun - 2018

然而跟踪相对月变化开始有自己的精神对我的开销。

另一种方式使用calmonths

试试这个。找到合适的开始日期,然后加上正确的数量calmonths从那里。

mydates5 = datetime (2017、7、1) + calmonths (0:11)
mydates5 = 1×12 datetime列数组1到5 01 - 7月- 2017年1 - 8月- 2017年1 - 9月- 2017年01 - 2017年10月- 2017年11月01 - -列6到10 01 - 12月- 2017年01 - 1月- 2018年01 - 3月- 2018年2月- 2018年01 - 01 - 4月- 2018列11到12 01 - 2018年5月- 01 - jun - 2018

你的想法呢?

你有另一种方式生产日期列表吗?你偏爱这类情况是什么?请让我知道在这里




发表与MATLAB®R2018b

|
  • 打印
  • 发送电子邮件

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。