Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB中日期格式的确定_Matlab_Date Format - Fatal编程技术网

MATLAB中日期格式的确定

MATLAB中日期格式的确定,matlab,date-format,Matlab,Date Format,我想知道MATLAB中Excel使用的日期模式。这是因为我从MATLAB中读取了一个Excel文件,但根据用户机器的位置,日期表示为dd-mm-yyyy或mm-dd-yyyy 澄清:对不起,我的解释不好。这是我的设想。我有一个带有日期的Excel文件(以及其他与此问题无关的文件)。我有两台计算机,需要运行我的matlab应用程序。在第一个示例中,当我使用xlsread(在MATLAB中)时,由于计算机的区域配置,日期以dd-mm-yyyy格式显示。在第二个文件中,我读取了相同的MatLab版本的

我想知道MATLAB中Excel使用的日期模式。这是因为我从MATLAB中读取了一个Excel文件,但根据用户机器的位置,日期表示为dd-mm-yyyy或mm-dd-yyyy

澄清:对不起,我的解释不好。这是我的设想。我有一个带有日期的Excel文件(以及其他与此问题无关的文件)。我有两台计算机,需要运行我的matlab应用程序。在第一个示例中,当我使用xlsread(在MATLAB中)时,由于计算机的区域配置,日期以dd-mm-yyyy格式显示。在第二个文件中,我读取了相同的MatLab版本的相同文件,但读取的日期是mm dd yyyy格式(同样,由于计算机2的区域配置不同于计算机1)

现在,当我尝试使用datenum、to-date转换时,我无法以正确的方式使用formatIn参数,因为如果我指定formatIn等于mm dd yyyy,这将在计算机1中正常工作,而不是在计算机2中,反之亦然


因此,我认为我需要在MATLAB中识别Excel在计算机中使用的日期模式,以便为formatIn找到正确的输入参数。

除非您非常了解您的数据,否则这是不可能的。例如,如果您有20XX年7月1日的年度读数,则不可能知道是1月7日还是7月1日

但是,您可以尝试以下操作:

MyString='01-23-2012';
FirstTwo=str2num(MyString(1:2));
if(FirstTwo>12)
    display('DD/MM');
else
    display('MM/DD');
end

如果日期的前两位数字大于12,那么您可能会认为您有DD/MM/YYYY。你可以在你所有的日期中循环使用它。

除非你非常了解你的数据,否则这是不可能做到的。例如,如果您有20XX年7月1日的年度读数,则不可能知道是1月7日还是7月1日

但是,您可以尝试以下操作:

MyString='01-23-2012';
FirstTwo=str2num(MyString(1:2));
if(FirstTwo>12)
    display('DD/MM');
else
    display('MM/DD');
end

如果日期的前两位数字大于12,那么您可能会认为您有DD/MM/YYYY。你可以在你所有的日期中循环这个问题。

我有点被你的问题弄糊涂了,MATLAB和Excel都可以轻松地支持mm dd和dd mm。在excel中,默认值将取决于您居住的位置。在美国,它将是dd-mm,而在欧洲(可能还有世界上大多数其他国家),它将是dd-mm

在MATLAB中,我不确定它是否像Excel一样依赖于位置,作为美国人,标准当然是mm dd,但您可以完全自定义MATLAB解析日期字符串的方式

签出,然后转到输入参数,然后是“formatIn”,它将为您提供读取日期并将其转换为序列日期号的方法列表。(或矢量,如果需要)

编辑:


不过,我误解了你的问题

我有点被你的问题弄糊涂了,MATLAB和Excel都可以轻松支持mm dd和dd mm。在excel中,默认值将取决于您居住的位置。在美国,它将是dd-mm,而在欧洲(可能还有世界上大多数其他国家),它将是dd-mm

在MATLAB中,我不确定它是否像Excel一样依赖于位置,作为美国人,标准当然是mm dd,但您可以完全自定义MATLAB解析日期字符串的方式

签出,然后转到输入参数,然后是“formatIn”,它将为您提供读取日期并将其转换为序列日期号的方法列表。(或矢量,如果需要)

编辑:


不过,我误解了你的问题

如果你说的是一个实际的.xls文件,我不知道这类文件是否有标记,但一种启发式方法(可能是唯一一种CSV格式的方法)是查找大于12的数字。这将立即告诉您所使用的格式,因为这样的数字不能对应于一个月。当然,对于一个小的数据集,这是不可靠的(严格地说,它从来都不是完全可靠的,但是对于非琐碎的数据,它很有可能工作)。

如果您谈论的是一个实际的.xls文件,我不太清楚这类文件是否有某种标志,但有一种启发式方法(可能CSV格式的唯一方法)是查找大于12的数字。这将立即告诉您所使用的格式,因为这样的数字不能对应于一个月。当然,对于较小的数据集,这是不可靠的(严格地说,它从来都不是完全可靠的,但是对于非琐碎的数据,它很有可能工作)。

您可以使用Java做一些事情来告诉您日期格式

>> import java.text.DateFormat;
>> import java.text.SimpleDateFormat;
>> df = DateFormat.getDateInstance(DateFormat.SHORT);
>> dateFormat = char(df.toPattern())
dateFormat =
dd/MM/yy
我认为xlsread使用这种格式,尽管您需要在两台机器上都进行测试。
注意,getDateInstance还有一个区域设置输入,可能很有用。

您可以使用Java来告诉您日期格式

>> import java.text.DateFormat;
>> import java.text.SimpleDateFormat;
>> df = DateFormat.getDateInstance(DateFormat.SHORT);
>> dateFormat = char(df.toPattern())
dateFormat =
dd/MM/yy
我认为xlsread使用这种格式,尽管您需要在两台机器上都进行测试。
注意,getDateInstance还有一个区域设置输入,可能很有用。

我在澳大利亚和美国的计算机上遇到了同样的问题。 这是一种解决方法,但它是一种干净的解决方案。 例如,在excel中将日期转换为文本 国际格式为“yyyymmdd”

 % B1=TEXT(A1,"yyyymmdd") % This is in excel
    % in matlab read excel file 'dates.xlsx'
    [data, dates_header] =xlsread('dates.xlsx');
    % use datevec to read-in data
    t = datevec(dates_header(:,2),'yyyymmdd');

我在澳大利亚和美国的电脑上也遇到了同样的问题。 这是一种解决方法,但它是一种干净的解决方案。 例如,在excel中将日期转换为文本 国际格式为“yyyymmdd”

 % B1=TEXT(A1,"yyyymmdd") % This is in excel
    % in matlab read excel file 'dates.xlsx'
    [data, dates_header] =xlsread('dates.xlsx');
    % use datevec to read-in data
    t = datevec(dates_header(:,2),'yyyymmdd');

谢谢你的帮助,但我认为这种方法风险很大。完全正确,它高度依赖于你的数据集。(要知道,如果你在任何日期发现一个大于12的数字,你都可以这样做)谢谢你的帮助,但我认为这种方法风险很大。完全正确,它高度依赖于你的数据集。(请注意,如果您在任何日期发现一个大于12的数字,您都可以这样做)您好。谢谢您的帮助。在这一点上,问题在于如何确定formatIn参数,因为在一台机器上,这将是“dd-mm-yyyy”,而在另一台机器上,这将是“mm-dd-yyyy”。您不能这样做!例如,我将