NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

「文字列からスキャン」の出力が一定でない

解決済み
解決策を見る

「文字列からスキャン」関数で時間文字列をタイムスタンプに変換しているのですが、

同じ入力でも以下の手順のように出力が異なることがあります。

形式文字列は「%<%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で行っています。

 

やりたいことは、時間文字列をタイムスタンプに変換することです。

ただし、上記のように一定の入力に対して出力が一定でないのは困ります。

「文字列からスキャン」関数でないといけないわけではないので、他の方法があればそちらを使用することも考えています。

0 件の賞賛
メッセージ1/5
4,498件の閲覧回数
解決策
トピック作成者tyosukeが受理

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」とする必要があります。

 

様々な表記に対応する一つの方法は、様々な形式文字列を試してエラーが出ない形式を探す方法があります。

下記、参考にしてください。

 

Discuss20150619.png

 

メッセージ2/5
4,474件の閲覧回数

tyosukeさん、こんにちは。

 

 当方、LV 2013 SP1の環境です。

 まったく同じことが起きることを確認しました。

 理由はわかりませんが、そちらの環境による問題ではない、ということだけ報告します。

 

以上です。  --- S.A.M. (CLAD)

0 件の賞賛
メッセージ3/5
4,463件の閲覧回数

こんにちは。

 

LabVIEW 2014 SP1 でも同じですね。バグっぽいのでKONDOHさんが提案された通りで処理するのが一番かと。

もしくは入力のパターンが常に同じであれば、入力の文字列に一度処理を加え、

「文字列からスキャン」の関数で変なエラーがでないする様にするのも一つの方法かと思います。

0 件の賞賛
メッセージ4/5
4,437件の閲覧回数

KONDOH様
私が疑問に思ったのは、違う入力ではなく同じ入力(2014/4/19 8:00)をして結果が異なるということです。

今回は教えて頂いた方法で時間文字列が省略された場合も処理できるようにしました。
ご教授、ありがとうございます。

S.A.M.様
doradorachan様
ご確認して頂き、ありがとうございました。

0 件の賞賛
メッセージ5/5
4,428件の閲覧回数