軍事時刻形式 (hhmm) から時刻形式 (hh:mm) への変換<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />hhmm 形式 (1432 または 725 など) の軍事時間を hh:mm 形式 (14:32 から 7:25 など) に変換する必要があります。変換できる簡単な式はありますか、それともスクリプトを使用する必要がありますか?ありがとう。
Re: ミリタリー タイム フォーマット (hhhh) をタイム フォーマット (hh:mm) に変換するできます! どうもありがとう。 あなたが提案した式を見るだけで、私はとても多くのことを学びました!Re: ミリタリー タイム フォーマット (hhhh) をタイム フォーマット (hh:mm) に変換する私の最初の質問は、入力時刻値の長さが 4 文字未満の場合、ミリタリー時刻の左側にゼロ (0) が欠落していると想定する必要がありますか?この場合、以下の解決策を提案します。値の先頭にゼロを埋め込んでから、変換を実行します。
standard = Substr( "00", Length( Char( :Military ) ) - 1 ) ||
Char( :Military );
Num( Substr( Char( :standard ), -2 ) ) * 60
+Num(
Substr(
Char( :standard ),
1,
(Length( Char( :standard ) ) - 2)
)
) * 3600;
Re: ミリタリー タイム フォーマット (hhhh) をタイム フォーマット (hh:mm) に変換するこのコードを使用して、文字列を時刻形式 (hh:mm) に変換しようとしました
Num( Substr( Char( :Military ), -2 ) ) * 60 + Num(
Substr( Char( :Military ), 1, (Length( Char( :Military ) ) - 2) )
) * 3600
しかし、文字列が 2 桁しかない場合、変換されないことに気付きました。 たとえば、26 の場合、午前 12 時 26 分には変換されません。 ただし、3 桁の文字列は正常に機能します (100 は午前 1:00 になります)。
それはどうしてですか?Re: ミリタリー タイム フォーマット (hhhh) をタイム フォーマット (hh:mm) に変換するコードを新しいフィールドの数式セクションに投稿し、フィールドをデータセットの列名に変更しましたが、完全に機能します!
Num( Substr( Char( :Military ), -2 ) ) * 60 + Num(
Substr( Char( :Military ), 1, (Length( Char( :Military ) ) - 2) )
) * 3600
どうもありがとうございます!
Re: ミリタリー タイム フォーマット (hhhh) をタイム フォーマット (hh:mm) に変換するこんにちはジム、
このスクリプトを使用するにはどうすればよいですか? 変更する必要のある変数は何ですか?
次に、データセットの名前は「transaction_data」で、ミリタリータイムが存在する列の名前は「DAY」です (transaction_data:DAY)
では、これら 2 つの変数をスクリプトに置き換えて実行するにはどうすればよいでしょうか。
このような初心者の質問で申し訳ありません。
Re: ミリタリー タイム フォーマット (hhhh) をタイム フォーマット (hh:mm) に変換するミリタリータイムからレギュラータイムにコンバートしてみてはいかがでしょうか?
Re: ミリタリー タイム フォーマット (hhhh) をタイム フォーマット (hh:mm) に変換する文字列を完全に回避するさらに別のアプローチ:
dt << New Column( "time",
Numeric,
"Continuous",
Format( "hr:m", 12 ),
Formula( Floor( :Military / 100 ) * 3600 + Mod( :Military, 100 ) * 60 )
);
Re: ミリタリー タイム フォーマット (hhmm) をタイム フォーマット (hh:mm) に変換するジム、あなたのソリューションは完璧に機能しました。 すべてが数値形式のままであることが気に入っています。 どうもありがとうございます!
Re: ミリタリー タイム フォーマット (hhmm) をタイム フォーマット (hh:mm) に変換するバイロンさん、ご指導ありがとうございました。提案された方法は機能します。ただし、変数は文字状態に保持されます。
将来の特別なケースのためにスクリプトを保存しました!
Re: ミリタリー タイム フォーマット (hhhh) をタイム フォーマット (hh:mm) に変換するこれは、Bryon が示しているのと同じことを行う別の方法です。私のバージョンは、文字値を作成してから入力するのではなく、数値の時間値に直接移動します。
名前のデフォルトはここ( 1 ) ;
// ミリタリー タイムを含むサンプル データ テーブルを作成します.....
// 列は数値または文字のいずれかです...変換
// 式は両方を処理します
dt =新しいテーブル( 「無題3」 、行を追加( 2 ) 、新しい列( "軍隊" 、数値、 「連続」 、フォーマット( "一番" 、 12 ) 、設定値( [ 1421 、 923 ] ) ) ) ;
// wait() 関数は、劇的な効果を追加するためのものです 
待って( 2 ) ;
// 変換された時間を保持する新しい列を追加します
// 変換により作成されるため、時刻形式を使用します
// 真夜中からの秒数の値
dt <<新しい列( "時間" 、数値、 「連続」 、フォーマット( 「時:分」 、 12 ) ) ;
待って( 2 ) ;
// すべての行にわたって実行し、変換を行います
// 式は、削除するだけで列式として機能します
// ":time="
行ごとに(
:時間=番号(サブストリング(シャア( :軍隊) 、 - 2 ) ) * 60 +
番号(サブストリング(シャア( :軍隊) 、 1 、 (長さ(シャア( :軍隊) ) - 2 ) ) ) * 3600
) ;
Re: ミリタリー タイム フォーマット (hhhh) をタイム フォーマット (hh:mm) に変換するこれを行うには、おそらくもっと簡単な方法があります。ただし、これはかなりうまく機能します。
ステップ1
Repeat( "0", 4 - Length( Char( :Start ) ) ) || Char( :開始)
開始番号をゼロで埋められた 4 桁の文字にします (これは郵便番号にも便利です)
ステップ2
Left( :ステップ 1, 2 ) || ":" ||右( :ステップ 1, 2 )
時間と分の間にコロンを挿入します
ステップ 3
Format( Informat( :Char 24 hr Time, "h:m" ), "h:m" )
この数式は、文字を 24 時間で表し、それを午前 0 時からの秒数に変換し、次にその秒を 12 時間に変換します。
入力形式は文字列を評価し、数値を返します
format は数値文字列を評価し、文字を返します
| 始める |
ステップ1 |
ステップ2 |
ステップ 3 |
| 3 |
0003 |
00:03 |
12:03 午前 |
| 30 |
0030 |
00:30 |
午前12時30分 |
| 1130 |
1130 |
11:30 |
11:30 午前 |
| 1830年 |
1830年 |
18:30 |
午後6時30分 |
.........
または、1 つの式を使用して 1 つの「単純な」ステップですべてを実行することもできます
Format(
Informat(
Left( Repeat( "0", 4 - Length( Char( :Start ) ) ) || Char( :Start ), 2 ) || ":" ||
Right( Repeat( "0", 4 - Length( Char( :Start ) ) ) || Char( :Start ), 2 ),
"h:m"
),
"h:m"
);
私は、特別な場合にリサイクルされる激しい式のコレクションを保管しています.