我需要在特定日期开始计算X天,但我不知道如何根据每个月的天数(例如2月28日或29日,3月31日但4月30日)来计算...)。
我知道有daysact( startDate, endDate )
函数,但这样我必须尝试日期,直到达到我想要的结果,而我需要的是程序从startDate
计算X天数并返回endDate
。例如,如果我想从明天算起90天,我就完成了:
startDate = '8-jan-2016';
endDate = '7-apr-2016';
numDays = daysact( startDate, endDate );
但我必须尝试日期,直到函数返回90(我知道它相当简单,但最终的程序必须针对不同的天数和不同的开始日期执行此操作...)< / p>
答案 0 :(得分:3)
com.sun.glass.ui.Robot robot = com.sun.glass.ui.Application.GetApplication().createRobot();
Pixels p =robot.getScreenCapture(1,1,1000,1000);
Buffer buf = p.getPixels();
java.nio.IntBuffer intBuffer = (IntBuffer) buf;
byte[] bytes = new byte[1001*1001];
int i=0;
while(buf.hasRemaining()){
bytes[i++] = (byte) intBuffer.get();
}
PixelFormat<ByteBuffer> pixelFormat = PixelFormat.getByteRgbInstance();
PixelWriter pw = canvas.getGraphicsContext2D().getPixelWriter();
pw.setPixels(1, 1, 1000, 1000, pixelFormat, bytes, 1, 1000);
这会使用datevec
将您的字符串转换为startDate = '8-jan-2016';
NumDays = 90;
tmp = datevec(startDate);
tmp(3)=tmp(3)+90;
endDate = datestr(tmp)
的向量,因此通过将所需的天数90添加到第三个元素,您可以将90天添加到开始日期。然后使用datestr
将向量转换回来,这使它再次成为可识别的日期。
根据@excaza's comment datenum
执行大致相同的操作,返回自[Y M D HH MM SS]
以来的天数,因此可以使用以下方法完成相同的操作:
0 January 0000
更为简洁,代价是必须将所有内容转换为几天。
因为为什么不这样做:
startDate = '8-jan-2016';
NumDays = 90;
endDate = datestr(datenum(startDate)+NumDays);
答案 1 :(得分:3)
2014b及更高版本:
datetime(2016,1,8) + days(90)
datetime(2016,1,8) + 90
datetime('today') + days(90)
datetime('today') + 90
datetime('tomorrow') + days(90)
datetime('tomorrow') + 90
答案 2 :(得分:1)
我想发布此作为替代方案。 @excaza在评论@Adriaan的答案中提到了这一点。
myDate = datenum(2016,1,8); % datenumber for january 8 2016
newDate = myDate + 90; % add 90 days
newDate2 = myDate + 2/24; % add 2 hours
newDate3 = myDate + 93/1440; % add 93 minutes
然后您可以使用datestr
打印日期。
datestr(newDate)
ans =
07-Apr-2016
>> datestr(newDate2)
ans =
08-Jan-2016 02:00:00
>> datestr(newDate3)
ans =
08-Jan-2016 01:33:00
datenum
可以使用许多输入甚至是用户定义的格式来读取日期字符串。