How to convert decimal time to HH:MM:SS

25 次查看(过去 30 天)
I have a dataset and the dates are being read by matlab in decimal time. I want it instead in 24 hour time as in the 'HH:MM:SS' format. If anyone knows a way to do it, please let me know. I've attached the dataset to this question
Thanks.

采纳的回答

Star Strider
Star Strider 2022-7-18
Try this (assuming that the decimal times are fractions of a day) —
T1 = readtable('https://www.mathworks.com/matlabcentral/answers/uploaded_files/1069395/General_Prompt_2.xlsx')
T1 = 73×6 table
MetricWireID SurveyName Prompt_SurveyStartedDate Prompt_SurveyStartedTime Prompt_SurveySubmittedDate Prompt_SurveySubmittedTime __________________________ ________________________ ________________________ ________________________ __________________________ __________________________ {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 09-Mar-2022 0.57934 09-Mar-2022 0.58215 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 09-Mar-2022 0.65731 09-Mar-2022 0.65907 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 09-Mar-2022 0.74525 09-Mar-2022 0.74794 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 10-Mar-2022 0.60737 10-Mar-2022 0.60931 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 10-Mar-2022 0.64112 10-Mar-2022 0.64244 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 10-Mar-2022 0.66376 10-Mar-2022 0.66542 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 11-Mar-2022 0.60443 11-Mar-2022 0.61084 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 11-Mar-2022 0.67159 11-Mar-2022 0.67269 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 11-Mar-2022 0.67733 11-Mar-2022 0.67868 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 12-Mar-2022 0.52457 12-Mar-2022 0.52628 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 12-Mar-2022 0.64763 12-Mar-2022 0.64926 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 12-Mar-2022 0.69402 12-Mar-2022 0.69516 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 13-Mar-2022 0.48693 13-Mar-2022 0.48904 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 13-Mar-2022 0.81632 13-Mar-2022 0.81744 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 14-Mar-2022 0.79081 14-Mar-2022 0.79255 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 15-Mar-2022 0.49403 15-Mar-2022 0.49538
T1.Prompt_SurveySubmittedTime = datetime(T1.Prompt_SurveySubmittedTime, 'ConvertFrom','datenum', 'Format','HH:mm:ss');
T1.Prompt_SurveyStartedTime = datetime(T1.Prompt_SurveyStartedTime, 'ConvertFrom','datenum', 'Format','HH:mm:ss')
T1 = 73×6 table
MetricWireID SurveyName Prompt_SurveyStartedDate Prompt_SurveyStartedTime Prompt_SurveySubmittedDate Prompt_SurveySubmittedTime __________________________ ________________________ ________________________ ________________________ __________________________ __________________________ {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 09-Mar-2022 13:54:15 09-Mar-2022 13:58:18 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 09-Mar-2022 15:46:32 09-Mar-2022 15:49:04 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 09-Mar-2022 17:53:10 09-Mar-2022 17:57:02 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 10-Mar-2022 14:34:37 10-Mar-2022 14:37:24 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 10-Mar-2022 15:23:13 10-Mar-2022 15:25:07 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 10-Mar-2022 15:55:49 10-Mar-2022 15:58:12 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 11-Mar-2022 14:30:23 11-Mar-2022 14:39:37 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 11-Mar-2022 16:07:05 11-Mar-2022 16:08:40 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 11-Mar-2022 16:15:21 11-Mar-2022 16:17:18 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 12-Mar-2022 12:35:23 12-Mar-2022 12:37:51 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 12-Mar-2022 15:32:35 12-Mar-2022 15:34:56 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 12-Mar-2022 16:39:23 12-Mar-2022 16:41:02 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 13-Mar-2022 11:41:11 13-Mar-2022 11:44:13 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 13-Mar-2022 19:35:30 13-Mar-2022 19:37:07 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 14-Mar-2022 18:58:45 14-Mar-2022 19:01:16 {'98asd7asd80a9sd8a9d8ad'} {'Questionnaire_Prompt'} 15-Mar-2022 11:51:24 15-Mar-2022 11:53:21
.

更多回答(1 个)

John D'Errico
John D'Errico 2022-7-18
format long g
T = now % so the current time in a decimal format
T =
738720.618467535
The integer part of that time represents days, and above. The fractional part represents the fractions of a day. So a fractinoal part that is at least 0.5 is a time at least noon.
datestr(T,'hh:mm:ss')
ans = '14:07:35'
As you can see, the current time on the server is 2 PM, but the time shown shows a in 24 hour time format by default. So I'm not sure why you are asking. If you want it to show AM/PM, thus a 12 hour clock time, then you would do this:
datestr(T,'hh:mm:ss PM')
ans = ' 2:07:35 PM'

标签

产品


版本

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by