荒井 陽介
2018.07.20
時刻判定についてご質問
特定の時間になったら、アクションを起こすようにしたいのですがうまくいきません。
例:15時ちょうどになったら「15時です」と発話
■処理の流れ
無限ループ内で)
・「時刻の取得」でtime_stringに時刻を代入
・「ifブロック」にて time_string=="15時 0分 0秒" を条件に指定
・trueの場合は「発話ブロック」にて発話
time_string に代入される値は、ログ出力にて確認したので
間違いないと思うのですが違うのでしょうか?
例:15時ちょうどになったら「15時です」と発話
■処理の流れ
無限ループ内で)
・「時刻の取得」でtime_stringに時刻を代入
・「ifブロック」にて time_string=="15時 0分 0秒" を条件に指定
・trueの場合は「発話ブロック」にて発話
time_string に代入される値は、ログ出力にて確認したので
間違いないと思うのですが違うのでしょうか?
回答
荒井 陽介
2018.07.20
Sotaサポート
2018.07.23
荒井 陽介 様
Sotaサポートです
文字列の判定をifブロックの「==」にて行っていることが問題であると思われます。
ifブロックでは「==」「<」「<=」「>」「>=」「!=」での判別しか行えないため、文字列の判別には不向きとなります。
現状の問題を解決する方法としては以下のような方法が考えられます。
1.「switch case(文字列)」ブロックで判別する
…この方法が最もシンプルと思われます。
2.「自由記述」ブロックを使用してString.Equalsメソッドを使ったif文を書く。
3.「ローカル時間の取得」から「日時の切り出し」をした値をifブロックで判別する。
…この方法では年・月・日・時・分・秒のいずれかを指定して数値として判別できます。
Sotaサポートです
文字列の判定をifブロックの「==」にて行っていることが問題であると思われます。
ifブロックでは「==」「<」「<=」「>」「>=」「!=」での判別しか行えないため、文字列の判別には不向きとなります。
現状の問題を解決する方法としては以下のような方法が考えられます。
1.「switch case(文字列)」ブロックで判別する
…この方法が最もシンプルと思われます。
2.「自由記述」ブロックを使用してString.Equalsメソッドを使ったif文を書く。
3.「ローカル時間の取得」から「日時の切り出し」をした値をifブロックで判別する。
…この方法では年・月・日・時・分・秒のいずれかを指定して数値として判別できます。
荒井 陽介
2018.08.02
ご教示いただいた対応策1にて無事やりたいことが実現できました。
ありがとうございました。
ありがとうございました。
この質問に回答する