2010-10-17 33 views

Trả lời

11

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 
+0

ok .. Tôi sẽ cố gắng mà ra :) – mtlb

+2

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. –

+0

@Andrew Janke: Gah! Cảm ơn rất nhiều vì đã chỉ ra điều này. – Jonas

Các vấn đề liên quan