更改日期格式你好,
我收到了一份 .xlsx 数据表,其中一列包含以下日期“dd.mm.yy”,即“03.10.14”。
将数据复制到 JMP 后,我创建了一个新列来获取日期的数字,并将日期转换为 1. 数字日期类型
2. 序数建模类型和
3. 格式为“yyyy-mm-dd”。
但是,某些日期“20.10.15”没有出现在我的新专栏中。 定义有冲突吗?
请告诉我如何克服这个问题。
回复:更改日期格式我看到完成转换所需的步骤。
问题解决了。 谢谢你!回复:更改日期格式您的问题是您读取的初始日期字段错误。初始日期字段的格式为“dd.mm.yy”,你是读取它就好像它是“mm.dd.yy”。我已附上您的数据表,可以看出 numdate 值与您的 newdate 值不匹配。在数据表中,我创建了一个字符日期列,它在公式中使用 format() 函数来得出字符值。
回复:更改日期格式感谢您的详细回复。
我处理了数据表并将“字符日期”转换为数字日期,“numdate”列。 之后,我将数字日期转换为我想要的格式,“newdate”列。 但是,由于某种原因,“日期”列中指定的某些日期不会显示新日期。 为什么它不采用某些日期,即 12.11.14 并将 numdate 值转换为新格式?
我附上了一个包含数据的 jmp 表,以便您实际查看数据。 我希望这可以帮助解决这个问题。
预先感谢,马克
<SPAN class="token function">Date DMY</SPAN><SPAN class="token punctuation">(</SPAN>
<SPAN class="token function">Num</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token function">Left</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token function">Char</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>Date <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token number">2</SPAN> <SPAN class="token punctuation">)</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
<SPAN class="token function">Num</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token function">Substr</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token function">Char</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>Date <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token number">4</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token number">2</SPAN> <SPAN class="token punctuation">)</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
<SPAN class="token function">Num</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token string">"20"</SPAN> <SPAN class="token operator">||</SPAN> <SPAN class="token function">Right</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token function">Char</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>Date <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token number">2</SPAN> <SPAN class="token punctuation">)</SPAN> <SPAN class="token punctuation">)</SPAN>
<SPAN class="token punctuation">)</SPAN>
回复:更改日期格式在我看来,您的回答和问题表明您不了解 JMP 如何处理日期值。JMP 使用等于自 1904 年 1 月 1 日午夜以来的秒数的数值来处理日期和时间。JMP 将其转换为 09Feb2015 或 02/09/2015 等显示之一的方法是在具有数值的列上设置 JMP 格式。
因此,如果您有一个名为“日期”的字符列,其值类似于“25.04.15”,并且您希望将其转换为 JMP 日期值,则可以创建一个新列,并应用以下公式:
Date DMY(
Num( Left( Char( :Date ), 2 ) ),
Num( Substr( Char( :Date ), 4, 2 ) ),
Num( "20" || Right( Char( :Date ), 2 ) )
)
它将采用字符值“2015 年 4 月 25 日”并将其转换为3512764800 。这是从 1904 年 1 月 1 日午夜到 2015 年 4 月 25 日午夜的秒数。现在缺少的是,您不希望以秒数显示数据。您想要的是将值显示在数据表中以及 2015 年 4 月 25 日的报告中。为此,您只需将列的格式设置为“yyyy-mm-dd”。以这种数字形式存储日期的优点是可以按日期对数据进行排序,并且可以对值进行加法和减法,甚至可以计算平均日期等。
下面是一个小脚本,当您运行它时,它将创建一个包含单个字符列的数据表,其结构为 dd.mm.yy。然后,该脚本创建一个数字 JMP 日期列,将显示结构更改为 yyyy-mm-dd。 然后,该条带继续创建一个字符列,该字符列将字符日期列值操作为结构“yyy-mm-dd”的新字符串。
Names Default To Here( 1 );
// Create a beginning data table
dt = New Table( "Dates",
New Column( "Date",
Character,
ordinal,
Values( {"25.04.15", "22.09.15", "03.11.15"} )
)
);
// Create a new numeric column that contains a JMP date value
// and tell JMP to format the numeric value using a
// yyy-mm-dd structure
dt << New Column( "Numeric Date",
formula(
Date DMY(
Num( Left( Char( :Date ), 2 ) ),
Num( Substr( Char( :Date ), 4, 2 ) ),
Num( "20" || Right( Char( :Date ), 2 ) )
)
),
format("yyyy-mm-dd")
);
// Create a new character column that rearanges the data from
// from the character column "Date"
dt << New Column( "Character Date",
character,
formula(
"20" || Right( Char( :Date ), 2 ) || "-" ||
Substr( Char( :Date ), 4, 2 ) || "-" || Left( Char( :Date ), 2 )
)
);回复:更改日期格式

回复:更改日期格式1.原始日期栏:charater、ordinal
2.年月日
在不进一步研究更改字符列的情况下,我相信公式会自动将其格式化为字符,因为我无法在没有再次空的新列的情况下更改为另一种数据类型/建模类型。
回复:更改日期格式我确信可以输出这样的字符日期结构。我有一些问题。
- 原始列的格式是什么?
- 数字/字符
- 如果是字符,它的结构是什么,20JUL2019 或 07/20/2019,还是什么?
- 为什么需要新列是字符列?
回复:更改日期格式吉姆,
还有一点是次要但重要的一点,当使用数据类型“char”时,是否有可能无法获得像 yyyy-mm-dd 这样的数字输出日期? 我尝试建立另一列以从带有字符日期的新列更改为上面提到的输出,但我无法创建它。
如果您有其他解决方案,请告诉我!
谢谢你,
马克
回复:更改日期格式嗨吉姆,
有效! 谢谢你! 我唯一要做的就是从配方中删除 DMY!
惊人的。
再次感谢你,
马克
回复:更改日期格式这是一种执行您需要的操作的简单方法,可确保为日、月和年选择输入列的正确部分。
输入您的数据
创建一个新的数字列,并在列信息中指定使用您想要的日期格式
在列中使用以下公式将原始列中的数据转换为 JMP 数字日期列。
Date DMY(
Num( Left( Char( :yourcolname ), 2 ) ),
Num( Substr( Char( :yourcolname ), 4, 2 ) ),
Num( "20" || Right( Char( :yourcolname ), 2 ) )
)
回复:更改日期格式嗨吉姆,
我从来没有想过可以直接在 JMP 中打开 xlsx 文件,我尝试过但无法打开它。
“日期”列是字符/序数。 在新列中,我将其更改为数字/序数并格式化为 yyyy-mm-dd。 更改为数字会产生数值,然后我将其格式化为 yyyy-mm-dd。
我需要做什么才能将 JMP 更改为字符串 = 月份值?
感谢您的支持,
马克
回复:更改日期格式我有一些疑问:
- 如何将 xlsx 数据导入 JMP?你说“复制后”。这是复制并粘贴到新的 JMP 数据表中吗?您是否尝试过仅使用 File==>Open,然后指向 xlsx 文件并以这种方式打开它?
- 将数据“复制”到 JMP 后,其中包含“03.10.14”数据的列的数据类型是什么?
- 假设“03.10.14”数据的数据类型为字符,您在新列中使用哪些步骤将其转换为数字数据类型?
我怀疑您对“20.10.15”值的问题是,JMP 认为字符串中的第一个值是月份值,而不是日期值。