これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド dateutils.ddiff です。
プログラム:
NAME
ddiff - DATE/TIME (基準日/時刻) からその他の日付/時刻までの期間を計算します。
SYNOPSIS
ディフ [オプション]... 日付時刻 [日付時刻] ...
DESCRIPTION
DATE/TIME (基準日付/時刻) から指定された他の DATE/TIME までの期間を計算します。
そして結果を期間として出力します。 他の DATE/TIME が省略された場合は、次から読み取ります。
stdin。
日付/時刻は次のスペシャルのいずれかにすることもできます
- 「now」は現在 (UTC) タイムスタンプとして解釈されます。
- `time' 現在 (UTC) タイムスタンプの時間部分
- `today' 現在の日付 (UTC による)
- ` tomo[rrow] ' 明日の日付 (UTC による)
- `y[ester]day' 昨日の日付 (UTC による)
注: 期間の出力形式 (-f で指定) では、すべての形式指定子が取り込まれます。
アカウント、つまり %M と %S を指定すると、期間が分と秒で表示されます。
一方、%S を指定すると、期間が秒単位で出力されるだけです。
セクション「改良ルール」を参照してください。 ディフとします。
認識 オプションs:
-h, - 助けて
ヘルプを印刷して終了します
-V, - バージョン
バージョンを印刷して終了します
-q, - 静かな
日付/時刻と期間のパーサー エラーと修正に関するメッセージを抑制します。 の
デフォルトでは、警告または修正された値が出力され、エラー コード 2 が返されます。
-f, - フォーマット=STRING
出力フォーマット。 これは指定子文字列 (strftime() の FMT と同様) のいずれかになります。
またはカレンダーの名前。
-i, --入力フォーマット=STRING...
入力形式。複数回使用できます。 各日付/時刻は、
日付/時刻を読み取ることができる場合は、指定された順序で入力フォーマット パーサーを実行します。
指定された入力形式指定子文字列で正常に動作した場合、その値が使用されます。
-e, --バックスラッシュエスケープ
出力および入力形式指定子でのバックスラッシュ エスケープの解釈を有効にする
文字列。
--from ゾーン=ゾーン
標準入力またはコマンドラインの日付をタイムゾーン ZONE からのものとして解釈します。
FORMAT SPECS FOR 期間
時間や絶対的な瞬間とは異なり、持続時間には参照がありません。つまり、参照瞬間です。
は期間の一部ではありません。 結果として、期間に名前を付けることはできません。つまり、期間は存在しません。
すべての期間とすべての参照に明確に適用される命名スキーム。
したがって、日付/時刻の形式指定子はいずれも、次の期間に対して意味を持ちません。
文字通りの意味。 ただし、直感的な使用を支援するために、フォーマット指定子を再利用しました。
は、次のように整数値と有効な期間の単位を表します。
日付の仕様:
%c %w と同等
%d 期間 (日)
%F より大きな単位を使用しない %dd と同等
%m 期間 (月単位)
%w 週単位の期間
%y %Y と同等
%Y 期間(年)
%db 期間(営業日)
%dB %db に相当
時間スペック:
%H 時間単位の継続時間
%I %H に相当
%M 期間 (分単位)
%S 持続時間 (秒)
%T より大きな単位を使用せずに %Ss と同等
%rS 閏秒を含む実際の秒数での継続時間
%rT より大きな単位に依存しない %rSs と同等
一般的な仕様:
%n 改行文字
%t タブ文字
%% リテラルの % 文字
修飾子:
%r 単位を実際の単位に変換する修飾子
%0 調整された値にゼロを埋め込む修飾子
%SPC 調整された値をスペースで埋めるための修飾子
b サフィックス、日を営業日として扱います
、 洗練 ルール
期間を形式で表す場合、期間はやや曖昧です。
指定子。 ポイントインタイム表現の形式指定子とは異なります。
ライン内関係を持つことができます。
したがって、たとえば、128 秒の長さは、「%S」を通じて「128」として表示される可能性がありますが、
同様に、「%M:%S」を「02:08」として入力します (8 分 XNUMX 秒を読み取ります)。
このあいまいさに対処するには、いくつかのアプローチがあります。 次にddiffツールが続きます。
私たちが「洗練ルール」と呼ぶものです。 つまり、フォーマットの位置に関係なく、
指定子が、フォーマット文字列内の別の指定子の有効な @emph{refinement} である場合、
その場合、小数値、つまり自然範囲内の値のみが表示されます。
@emph{refined} 指定子を考慮します。
%Y 可能な絞り込み: %m、%w、%d
%m 個の可能な絞り込み: %w、%d
%w 可能な絞り込み: %d
%d 個の可能な絞り込み: %H、%M、%S
%H 可能な絞り込み: %M、%S
%M 可能な絞り込み: %S
絞り込みの選択肢は優先順位の順にリストされており、相互に優先されます。
エクスクルーシブ。 つまり、期間を月や時間で表すことはできません。
"%d" 指定子もあります。 一方、内部の洗練の連鎖の中で
要素はオプションです。つまり、期間を週や時間で表現できます。
24日は168時間なので、XNUMX週間はXNUMX時間になります。
負の期間の場合 (被減数は減数に対して未来の値になります)
@emph{のみ}最大の単位にマイナス記号が付きます。
絞り込みルールを使用すると、フォーマット文字列が非常にシンプルに保たれるため、
演算子または本格的な言語を使用して範囲の曖昧さを区別します。
理論的には、 のリテラル文字の一部である可能性があるため、エスケープする必要があります。
フォーマット文字列。多くの場合、作成が難しいコマンドラインが生成されます。
そして、後で理解するのはさらに難しくなります(たとえば、シェルスクリプトで使用された場合)。
改良ルールは 99% のケースを巧みにカバーしますが、他のアプローチとは異なり、
同じフォーマット文字列で XNUMX つの未精製の値を表示する @emph{いいえ} 方法、例: "'%w 週
(%d 日です)」。
例
$ ddiff 2012-03-02 2012-03-02
0
$
$ ddiff 2012-03-02 2012-03-12
10
$
$ ddiff 2012-03-02 2012-04-12
41
$
$ ddiff 2012-03-12 2012-04-02
21
$
$ ddiff 2012-04-02 2012-03-12
-21
$
$ ddiff 2012-01-02 2012-02-29 -f '%dd'
58d
$
$ ddiff 2012-01-02 2012-02-29 -f '%ww %dd'
8週2日
$
$ ddiff 10:00:00 10:00:00
0s
$
$ ddiff 10:01:00 10:06:00
300s
$
$ ddiff 10:06:00 10:01:00
-300年代
$
$ ddiff 10:01:00 11:03:10 -f '%S 秒'
3730秒
$
$ ddiff 10:01:00 11:03:10 -f '%Mm %Ss'
62m 10s
$
$ ddiff 10:01:00 11:03:10 -f '%H:%M:%S'
1:2:10
$
$ ddiff 2012-03-02T10:04:00 2012-03-02T10:14:00
600s
$
$ ddiff 2012-03-02T10:04:00 2012-03-02T10:14:00 -f '%M min'
10分
$
$ ddiff 2012-03-01T12:17:00 2012-03-02T14:00:00
92580s
$
$ ddiff 2012-03-01T12:17:00 2012-03-02T14:00:00 -f '%d 日と %S 秒'
1日と6180秒
$
onworks.net サービスを使用してオンラインで dateutils.ddiff を使用する