我想从用户接受(比方说)3个时间元素(例如8:30,8:20和8:00)并使用'datenum'将其存储在数组中。我怎样才能实现这一目标?请帮忙。
答案 0 :(得分:0)
假设您只想提示给出当前日期和年份的用户,并且仅想要当前时间(小时和分钟 - 秒为0),可以做到以下几点:
dateNumArray = []; %// Store datenums here
%// Enter a blank line to quit this loop
while true
timestr = input('Enter a time: ', 's');
if (isempty(timestr))
break;
end
%// Split the string up at the ':'
%//splitStr = strsplit(timestr, ':'); %// For MATLAB R2012 and up
splitStr = regexp(timestr, ':', 'split');
%// Read in the current date as a vector
%// Format of: [Year, Month, Day, Hour, Minute, Second]
timeRead = clock;
%// Replace hours and minutes with user prompt
%// Zero the seconds
timeRead(4:6) = [str2num(splitStr{1}) str2num(splitStr{2}) 0];
%// Convert to datenum format
dateNumArray = [dateNumArray datenum(timeRead)];
end
以上代码的作用是我们将继续为用户输入循环,其中时间应为HH:MM
格式。请注意,我没有执行错误检查,因此预计HH
介于0-23之间,而MM
介于0-59之间。您可以通过按 ENTER 或 RETURN 为每个条目输入数字。它将其解析为字符串,将字符串拆分为:
字符,并将:
字符前后的每个部分转换为数字。然后,我们使用clock
命令获取记录每小时和分钟的当前时间。这是一个6元素向量,其中记录了年,月,日,小时,分钟和秒。我们只需用我们从用户读入的内容替换小时和分钟,并将秒数归零。我们终于使用此向量并将其附加到dateNumArray
变量,其中每次用户写入时,我们都会在此数组中附加datenum
个数字。
当你调用它时,这是一个示例场景:
Enter a time: 8:30
Enter a time: 8:45
Enter a time: 8:00
Enter a time:
以上是上面的示例输出:
format bank %// Show whole numbers and little precision
dateNumArray
format %// Reset format
dateNumArray =
735778.35 735778.36 735778.33