ロックされた文字列を作成する短い日付()以下のスクリプトで「日付」列を作成すると、ロックされた(したがって、形式を変更できない)列が作成されます。 式のShort Date()が問題のようです。
数式が適用された後、時間列は数値のままです。
「日付」を取得して数値を維持するにはどうすればよいですか?
日付は、データが存在する日のみを表示するようにカレンダーを設定するために、calender()の後半にあります。
_____________________________________________________
//Open
dt_run = Open( "data.jmp");
dt_run << New Column( "Date", Numeric, Continuous, Format("m/d/y"), Input Format( "m/d/y h:m:s"));
Column( "Date") << Add Column Properties( Formula( Short Date( :Name( "Date & Time" ) ) ) );
dt_run << New Column( "Time", Numeric, Continuous, Format("h:m"), Input Format( "m/d/y h:m:s"));
Column( "Time") << Add Column Properties( Formula( Time Of Day( :Name( "Date & Time" ) ) ) );ありがとう
マット
再:短い文字列()ロックされた文字列を作成するあなたが抱えている問題は、Short Date()関数が返すものを理解することです。 1904年1月1日午前12:00以降の秒数であるJMP日付値は返しませんが、JMP日付値の日付部分のリテラル文字列を返します。 これを説明するために、次のJSLはShort Date()が返すものを表示します。
show(short date(today())); <BR />
そしてそれは戻ります
Short Date(Today()) = "12/03/2019";
また、JSLではリテラル文字列を返したため、Date列を文字列に変更しました。
本当に必要なのは、DateMDY()関数を使用して日付値を作成することです。
以下は、私があなたが必要だと思うことをするあなたのコードの修正されたバージョンです:
Names default to here(1);
dt_run = new table("data",add rows(1), new column("Date & Time",formula(today()),format("m/d/y h:m:s")));
dt_run << New Column( "Date", Numeric, Continuous, Format("m/d/y"));
Column( "Date") << set Formula( DateMDY(Month(:Name( "Date & Time" )),Day(:Name( "Date & Time" )),Year(:Name( "Date & Time" )) ) );
dt_run << New Column( "Time", Numeric, Continuous, Format("h:m"));
Column( "Time") << set Formula( Time Of Day( :Name( "Date & Time" ) ) );再:短い文字列()ロックされた文字列を作成するジム、
よく説明された答えをありがとう。投稿は常に有益で、教育的で、フォローしやすいです。
マット再:短い文字列()ロックされた文字列を作成するJSLについてもう少し考えてみてください。......次を使用して、Date列にデータを入力できます。
Column( "Date") << set Formula( informat(Short Date( :Name( "Date & Time" ) ), "mm/dd/yyyy") );
Informat()関数を使用します。この関数はリテラル文字列を受け取り、数値のJMP日付値を返します
再:短い文字列()ロックされた文字列を作成する日付時刻を秒から日に変更し、フローリングすることで、数値のみを使用して実行することもできます。
Names Default to Here( 1 );
dt = New Table( "Test",
Add Rows( 1 ),
New Column( "DateTime",
Numeric,
"Continuous",
Format( "m/d/y h:m:s", 23, 0 ),
Formula( Today() ),
)
);
dt << New Column("Date",
Numeric,
"Continuous",
Format( "m/d/y", 23 ),
Formula(
num_s_per_day = 24*60*60; // # seconds/day
Floor(
:DateTime // take the date time which is a number in seconds
/ num_s_per_day // turn it into days by dividing
) // this will round down to the day
* num_s_per_day // turn it back into seconds (a date time)
),
);