06-18-2015 09:36 PM
「文字列からスキャン」関数で時間文字列をタイムスタンプに変換しているのですが、
同じ入力でも以下の手順のように出力が異なることがあります。
形式文字列は「%<%Y/%m/%d %H:%M:%S>T」です。
1.入力文字列に「2014/4/19 8:00」を入れて実行
形式が間違っているのでエラーになります
2.入力文字列に「2014/4/19 8:00:00」を入れて実行
形式が正しいので正常に処理されます
3.手順1と同様に「2014/4/19 8:00」を入れて実行
今回は何故かエラー発生せずに処理されます
以上のように同じ入力をしても出力が一定でないのはなぜでしょうか?
確認に使用したVIを添付します。
LabVIEW2013で行っています。
やりたいことは、時間文字列をタイムスタンプに変換することです。
ただし、上記のように一定の入力に対して出力が一定でないのは困ります。
「文字列からスキャン」関数でないといけないわけではないので、他の方法があればそちらを使用することも考えています。
解決済! 解決策の投稿を見る。
06-19-2015 08:56 AM
tyosuke 様
「2014/4/19 8:00」と、「2014/4/19 8:00:00」は同じ、とお考えの様子ですが、
「文字列からスキャン」関数は違うと判断するという事です。
「2014/4/19 8:00:00」には、形式文字列「%<%Y/%m/%d %H:%M:%S>T」で一致しますが、
「2014/4/19 8:00」には、形式文字列「%<%Y/%m/%d %H:%M>T」とする必要があります。
さらに
「2014/4/19 8」には、形式文字列「%<%Y/%m/%d %H>T」とする必要があり、
「2014/4/19 午前8:00:00」には、形式文字列「%<%Y/%m/%d %p%I:%M:%S>T」とする必要があります。
様々な表記に対応する一つの方法は、様々な形式文字列を試してエラーが出ない形式を探す方法があります。
下記、参考にしてください。
06-20-2015 10:13 AM
tyosukeさん、こんにちは。
当方、LV 2013 SP1の環境です。
まったく同じことが起きることを確認しました。
理由はわかりませんが、そちらの環境による問題ではない、ということだけ報告します。
以上です。 --- S.A.M. (CLAD)
06-22-2015 02:24 AM
こんにちは。
LabVIEW 2014 SP1 でも同じですね。バグっぽいのでKONDOHさんが提案された通りで処理するのが一番かと。
もしくは入力のパターンが常に同じであれば、入力の文字列に一度処理を加え、
「文字列からスキャン」の関数で変なエラーがでないする様にするのも一つの方法かと思います。
06-22-2015 05:56 AM
KONDOH様
私が疑問に思ったのは、違う入力ではなく同じ入力(2014/4/19 8:00)をして結果が異なるということです。
今回は教えて頂いた方法で時間文字列が省略された場合も処理できるようにしました。
ご教授、ありがとうございます。
S.A.M.様
doradorachan様
ご確認して頂き、ありがとうございました。