Sử dụng DATESTR
>> datestr(40189)
ans =
12-Jan-0110
Thật không may, Excel bắt đầu đếm từ 1-Jan-1900. Tìm hiểu làm thế nào để chuyển đổi ngày nối tiếp từ Matlab sang Excel bằng cách sử dụng DATENUM
>> datenum(2010,1,11)
ans =
734149
>> datenum(2010,1,11)-40189
ans =
693960
>> datestr(40189+693960)
ans =
11-Jan-2010
Nói cách khác, để chuyển đổi bất kỳ ngày Excel sê-ri, gọi
datestr(excelSerialDate + 693960)
EDIT
Để có được theo định dạng dd/mm/yyyy, hãy gọi datestr
theo định dạng được chỉ định
excelSerialDate = 40189;
datestr(excelSerialDate + 693960,'mm/dd/yyyy')
ans =
01/11/2010
Ngoài ra, nếu bạn muốn thoát khỏi số không hàng đầu cho tháng, bạn có thể sử dụng để sửa chữa REGEXPREP điều
excelSerialDate = 40189;
regexprep(datestr(excelSerialDate + 693960,'mm/dd/yyyy'),'^0','')
ans =
1/11/2010
ok .. Tôi sẽ cố gắng mà ra :) – mtlb
Lưu ý rằng một số file Excel bắt đầu của họ epoch vào năm 1904, không phải năm 1900. (Xem http://support.microsoft.com/kb/180162) Nếu bạn đang viết mã chuyển đổi ngày Excel/Matlab chung, bạn sẽ cần kiểm tra hoặc cung cấp đầu vào để biểu thị trường hợp đặc biệt năm 1904. Việc bù đắp datenum là 695422 cho 1904 tập tin Excel epoch. –
@Andrew Janke: Gah! Cảm ơn rất nhiều vì đã chỉ ra điều này. – Jonas