www.gusucode.com > matlab 案例源码 matlab代码程序 > matlab/DateAndTimeArithmeticExample.m
%% Date and Time Arithmetic % This example shows how to add and subtract date and time values to % calculate future and past dates and elapsed durations in exact % units or calendar units. You can add, subtract, multiply, and divide % date and time arrays in the same way that you use these operators with % other MATLAB(R) data types. However, there is some behavior that % is specific to dates and time. %% Add and Subtract Durations to Datetime Array % Create a datetime scalar. By default, datetime arrays are not associated wtih a time % zone. % Copyright 2015 The MathWorks, Inc. t1 = datetime('now') %% % Find future points in time by adding a sequence of hours. t2 = t1 + hours(1:3) %% % Verify that the difference between each pair of datetime values in |t2| % is 1 hour. dt = diff(t2) %% % |diff| returns durations in terms of exact numbers of hours, minutes, % and seconds. %% % Subtract a sequence of minutes from a datetime to find past points in % time. t2 = t1 - minutes(20:10:40) %% % Add a numeric array to a |datetime| array. MATLAB(R) treats each value in % the numeric array as a number of exact, 24-hour days. t2 = t1 + [1:3] %% Add to Datetime with Time Zone % If you work with datetime values in different time zones, or if you want % to account for daylight saving time changes, work with datetime arrays % that are associated with time zones. Create a |datetime| scalar % representing March 8, 2014 in New York. t1 = datetime(2014,3,8,0,0,0,'TimeZone','America/New_York') %% % Find future points in time by adding a sequence of fixed-length (24-hour) days. t2 = t1 + days(0:2) %% % Because a daylight saving time shift occurred on March 9, 2014, the third % datetime in |t2| does not occur at midnight. %% % Verify that the difference between each pair of datetime values in |t2| % is 24 hours. dt = diff(t2) %% % You can add fixed-length durations in other units such as years, hours, minutes, and seconds % by adding the outputs of the |years|, |hours|, |minutes|, and |seconds| functions, % respectively. %% % To account for daylight saving time changes, you should work with % calendar durations instead of durations. Calendar durations account for % daylight saving time shifts when they are added to or subtracted from % datetime values. %% % Add a number of calendar days to |t1|. t3 = t1 + caldays(0:2) %% % View that the difference between each pair of datetime values in |t3| is % not always 24 hours due to the daylight saving time shift that occurred on March 9. dt = diff(t3) %% Add Calendar Durations to Datetime Array % Add a number of calendar months to % January 31, 2014. t1 = datetime(2014,1,31) %% t2 = t1 + calmonths(1:4) %% % Each datetime in |t2| occurs on the last day of each month. %% % Calculate the difference between each pair of datetime values in |t2| % in terms of a number of calendar days using the |caldiff| function. dt = caldiff(t2,'days') %% % The number of days between successive pairs of datetime values in |dt| is not % always the same because different months consist of a different number of % days. %% % Add a number of calendar years to January 31, 2014. t2 = t1 + calyears(0:4) %% % Calculate the difference between each pair of datetime values in |t2| % in terms of a number of calendar days using the |caldiff| function. dt = caldiff(t2,'days') %% % The number of days between successive pairs of datetime values in |dt| is not % always the same because 2016 is a leap year and has 366 days. %% % You can use the |calquarters|, |calweeks|, and |caldays| functions to % create arrays of calendar quarters, calendar weeks, or calendar days that % you add to or subtract from datetime arrays. %% % Adding calendar durations is not commutative. When you add more than one |calendarDuration| array to a datetime, % MATLAB(R) adds them in the order in which they appear in the command. % % Add 3 calendar months followed by 30 calendar days to January 31, 2014. t2 = datetime(2014,1,31) + calmonths(3) + caldays(30) %% % First add 30 calendar days to the same date, and then add 3 calendar months. The % result is not the same because when you add a calendar duration to a % datetime, the number of days added depends on the original date. t2 = datetime(2014,1,31) + caldays(30) + calmonths(3) %% Calendar Duration Arithmetic % Create two calendar durations and then find their sum. d1 = calyears(1) + calmonths(2) + caldays(20) %% d2 = calmonths(11) + caldays(23) %% d = d1 + d2 %% % When you sum two or more calendar durations, a number of months greater than 12 % roll over to a number of years. However, a large number of days does not % roll over to a number of months, because different months consist of % different numbers of days. %% % Increase |d| by multiplying it by a factor of 2. Calendar duration % values must be integers, so you can multiply them only by integer values. 2*d %% Calculate Elapsed Time in Exact Units % Subtract one |datetime| array from another to calculate elapsed time in % terms of an exact number of hours, minutes, and seconds. %% % Find the exact length of time between a sequence of datetime values and the start of the previous % day. t2 = datetime('now') + caldays(1:3) %% t1 = datetime('yesterday') %% dt = t2 - t1 %% whos dt %% % |dt| contains durations in the format, hours:minutes:seconds. %% % View the elapsed durations in units of days by changing the |Format| % property of |dt|. dt.Format = 'd' %% % Scale the duration values by multiplying |dt| by a factor of 1.2. Because % durations have an exact length, you can multiply and divide them by % fractional values. dt2 = 1.2*dt %% Calculate Elapsed Time in Calendar Units % Use the |between| function to find the number of calendar years, months, and days elapsed % between two dates. %% t1 = datetime('today') %% t2 = t1 + calmonths(0:2) + caldays(4) %% dt = between(t1,t2)