問題タブ [nsformatter]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - NSDateFormatter が予期しない時間値を返す
次のコードが一貫性のない時間値を返す理由を誰か説明できますか? ユーザー指定の日付/時刻文字列から NSDate オブジェクトを作成しようとすると、誤った結果が得られました。問題を説明するために、以下のコードをまとめました。
このコードは、次の出力を生成します。
結合された日付と時刻の文字列が日付フォーマッタによって解析されて NSDate オブジェクトが作成されると、明らかに何か問題が発生します。入力されたタイム ゾーンを理解していないようで、本来あるべき時間 (つまり +4 時間) から数時間ずれている GMT の時刻を返します。タイムゾーンを「EDT」に設定したので、入力にオフセットをハードコーディングする以外に、この問題を解決するために他に何ができるかわかりません。どんな助けでも大歓迎です。
ios - ユーザーが入力するときに UITextField のテキストを電話番号としてフォーマットする
ユーザータイプとして「入力を電話番号にフォーマット」しようとしているカスタムUITextFieldがあります。私が達成したいこと:
+
削除できない最初の文字として UITextField にプレフィックス記号を追加します。String 変数と UITextField のテキストの両方を、ユーザーが入力する単純な数字(4929112345678)ではなく、適切な電話番号(+49 291 12345678)の形式でフォーマットします。
私が調査したところ、そのための組み込みの方法がないことがわかりました。入力文字列を電話番号にフォーマットするためのPhoneNumberKitという使いやすいライブラリも見つけました。プレイグラウンドでは、次のように機能します..
ライブラリが+
適切にフォーマットするには、最初の文字として文字列が必要であることに注意してください。
UITextField に実装してみました。
textField.text = "+\(updatedTextString as String)"
コメントし続けると、print(updatedTextString)
適切にフォーマットされた文字列がコンソールに出力されますが、UI の UITextField 内には、「4929112345678」のような単純な構造化されていない数字が表示されるだけです。
コメントを外すと、おかしくなり始め、UITextField は UI に重複した文字を表示し始めますが、印刷用のコンソール ログもかなりおかしくなります。私も前に空にしてみtextField.text = ""
ましたが、どちらもうまくいきませんでした。
私は何を間違っていますか?うまく機能しないのに何が足りないのですか?ライブラリ自体ではなく、私に関連していると思います。
また、この問題を解決するための他の提案 (またはライブラリ) があれば、共有してください。
ios - `NSFormatter` のあいまいなサブクラスはいくつありますか? 他の人を知っていますか?
Cocoa をしばらく使用している場合は、おそらく および に精通しているでしょNSDateFormatter
うNSNumberFormatter
。これらは、さまざまな言語やロケールをサポートしながら、日付や数値から書式設定された表示文字列を作成したり、日付や数値の文字列を数値に変換したりするのに便利です。
数週間前NSDateComponentsFormatter
、「4 時間 37 分 17 秒」のようなフォーマットされた時間間隔を作成できる に出くわしました。かなりクール。
NSDateIntervalFormatter
2 つの日付を比較して文字列を作成する related もあります。
次に、いくつかの非常にあいまいな NSFormatter サブクラスがあります。
編集:
コメントから、私はNSPersonNameComponentsFormatter
.
Xcode ヘルプ システムで「NS*Formatter」を検索すると、これらのほとんどが表示されますが、すべてではありません。(検索を機能させるには、ヘルプ テキストを正しくインデックス化する必要があるようで、面倒です。)
それは私が見つけることができた合計をもたらします
厄介なことに、これらのフォーマッターの多くはロケール プロパティを持っていないように見えるため、システムのデフォルト ロケール以外の言語/ロケールで書式設定された文字列を作成するためにそれらを使用するのはあまり簡単ではありません。何か不足している場合は、教えてください。
私が行方不明になっている他のフォーマッターを知っている人はいますか? これらはかなりあいまいですが、必要になれば時間を大幅に節約できます。
編集#2:
質問パート 2: システムの既定のロケール以外のロケールにロケール プロパティがないフォーマッタから出力を取得する方法はありますか? すべてが locale プロパティを持っていて尊重しているわけではないのはばかげているようです。現在のロケール以外の言語/ロケールの出力を生成する必要があることはよくあります。
ios - locale プロパティを持たない NSFormatter のロケール/言語をどのように指定しますか?
NSFormatter には多くの特殊なサブクラスがあります。
私たちのほとんどは、 と を使用NSNumberFormatter
していNSDateFormatter
ます。これらには、文字列とフォーマッタがサポートする「ネイティブ」形式との間の変換に使用するロケールを指定できる locale プロパティがあります。NSDateComponentsFormatter
プロパティの 1 つからロケールを継承するのが好きな人もいます (NSDateComponentsFormatter
指定されたカレンダーのロケールがあればそれを使用します)。
他のほとんどは、ロケールを指定する方法がないようです。特定の言語/ロケールで出力を生成するために私が考えることができる唯一の方法は、システムロケールを設定し、出力を取得/文字列を数値形式に変換してから元に戻すことです。
NSByteCountFormatter
どのような種類のロケール設定も提供していないように見えるようなフォーマッターのロケールを設定する方法はありますか?
編集:
この質問を書いてから、上記の多くのフォーマッタの名前が変更されました。ほとんどの (すべて?) は、"NS" プレフィックスを失いました。
swift - 引用符を使用した Swift NSDateFormatter
このコードは機能します:
戻り値Dec 31 10
しかし、これDec 31 '10
を使用して取得しようとすると
うまくいかないDec 31 yy
どのように引用を含めることができますか?
ios - フォーマッタを使用して文字列の日付をnsdateに変換する方法は?
私はstackOverflowの回答に従い、コードを書きますが、何が起こるかわかりません。うまくいきません。plz、誰でも私のためにそれを解決できます。私はだますコードを使用します....
それでこれです。上記のコードは動作しませんでした myDate オブジェクトはまだ nil です