Dateに関連するアクション全般に発生するようになったやっかいなバグとその対処法

2017/09/13追記
ここで紹介する方法のほかに色々な解決方法をコメント欄に寄せていただきましたので、ご覧になってみて下さい。

たぶん直近のアップデート後からだと思うのですが、Date関連のアクションにバグが入り込んで、それらのアクションが使い物にならなくなってしまいました。
バグはテキストからDateに変換する時に起こります。

時間の部分が一桁表記のときに、午後の時間として処理されてしまいます(本当はもうちょっと発現に条件がありますが、ここでは端折ります)。

テキストからDateに変換なんてしないから自分には関係ないと思った方がいるかもしれませんが、おそらく高頻度で行っているはずです。

▼こんなのとか

▼これも

2枚めのスクリーンショットではDateをそのままAdd New Reminderアクションのフィールドに渡しているのでテキスト→Dateの処理が無いように見えますが、実際には行われています。Alert Timeのフィールドはテキストフィールドであり、その部分にDateを入力すると、Workflowはそれを自動的にテキストに変換します。そして変換されたテキストを使用してDateの生成を行っています。

▼つまりこれと全く等価

対処法

このバグを回避するには、時間の部分を二桁表記にします。

▼手打ちなら0を付けるだけ

▼生成したDateならReplace Textを使って0を補完

0補完したものを他のアクションで使用することで、バグを回避できます。
毎回Replace Textの正規表現を書くのは面倒なので、自作アクションにしました。

https://workflow.is/workflows/13cd9228e0bc463bb7184440f9b1af02

一桁表記のものに0を補完し、二桁表記には何もしません。
だいたいどのような書き方にも対応できるように作りましたので、Dateだけでなく長いテキスト等もこのワークフローで処理できます。
 


とにかくDateを生成した後はこのワークフローに通しておくと良いと思います。さすがにこのレベルのバグは修正されると思いますが、バグが取り除かれたとしても0を補完する処理を除去する必要はありません。再びバグが発現する可能性を考えると、除去しないほうがよいでしょう。

スポンサーリンク
スポンサーリンク

4 件のコメント

  • 私もこのバグで困っていました。
    Workflowで日記をつけていたため、午前が午後になってしまい日記がめちゃくちゃになりました。
    私がした対処は以下の通りです。

    1.iPhoneの時刻を24時間表示すをオフにする。
    (設定>一般>日付と時刻>24時間表示)
    2.レシピ内のDateのTime FormatをMediumにする。

    これで時刻が「午前7:35:09」というような表記になり、カレンダーやリマインダー等で正しい時刻が扱われます。

    私が試した限りではこれで解決しました。

    • なるほど、iPhoneの設定を見直すことは全く思い付きませんでした。
      というか、12時間表示にできることをそもそも知らなかったのですが(笑)。

      追加情報として記事に追記させていただきます。ありがとうございます。

  • 私も数日前にレシピを作るときに上手くいかずに困っていたのですが、「Format Date」で「RFC2822」などに変換したら一応午後の時刻で出力できました。

    • コメントありがとうございます。
      確かにDateだけに対応するためでしたらFormat Dateを使うのが手軽ですね。テキストにも対応できる方法として紹介するためReplace Textを使いましたが、テキスト → Dateの明示的な変換をやる人はあまりいないような気がするのでFormat Dateを使った方法を紹介したほうがよかったかもしれません。

  • コメントを残す

    メールアドレスが公開されることはありません。