パスワードを忘れた? アカウント作成
13632050 story
Windows

.NET Frameworkに新たな新元号対応機能が追加される 46

ストーリー by hylom
現実的な対応 部門より
あるAnonymous Coward曰く、

.NET Frameworkに新たな新元号対応機能が追加される(日本マイクロソフトのJapan New Era Name Support Blog窓の杜)。

1).NET Framework ver.4系に先行実装されたレジストリによる元号判定が、.NET Framework ver.2.0~3.5にも実装される。

2)昭和65年や平成32年といった正規化されていない元号の日付であっても、正常に西暦に変換できるようになる。(これまでは例外が発生していた。)

3)上記動作の変更に伴って、旧来の動作と新しい動作とを切り替えられる設定を追加。

面倒なことをしてくれるものである。

1)の仕様変更は7月の月例アップデートで提供され、2)変更については6月末の更新で「Optional」として配信されるが、「重要な更新」にこの変更を含める時期は未定という。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2018年06月26日 17時33分 (#3432540)

    >昭和65年や平成32年といった表現は、法令上無効なものではなく

    あーそっか、免許証の期限とかで実際に使われてるから、対応してないと困るのか。なるほど奥が深い。

    • by Anonymous Coward on 2018年06月26日 21時22分 (#3432732)

      Javaの方の新元号対応状況 [hatena.ne.jp]

      正規化?されていない元号に対しては今の所例外になってしまう模様。

      > 元号に関わる処理は日本向けシステムを作っている人にしか影響がないので、日本で声をあげないと改善はされません。
      > 元号を扱う可能性があるなら、動作を確認して声をあげていかないといけないと思います。

      親コメント
      • by Anonymous Coward

        思うにもっと早くに声を上げるべきだったと。ジャバはオープンな仕様なのでね。
        まあ使用はオープンだがオラクルの説得には金かマンパワーの供出が必要になるが。

    • by Anonymous Coward

      こういう事があるんだぁ。

    • by Anonymous Coward

      今年のカレンダーもこういう表記になってる

    • by Anonymous Coward

      昭和65年が通るようになるとシステムに「昭和65年」のデータを入力して確かに受理されたはずなのに
      後日「昭和」で検索しても入力したはずのデータが出てこない、みたいな案件が……

      • by Anonymous Coward

        それはそれで正解のような。
        「平成」で検索して昭和65年のデータが出てこないのも不便だし、
        出てくるようにすると、「昭和」と「平成」検索すると重複することになる。

  • by Anonymous Coward on 2018年06月26日 17時24分 (#3432531)

    12/32や3/32への対応をお願いします。

    • by Anonymous Coward

      それは今でも正規化されるよね?
      それともなんか投げろってこと。
      ・石を投げる
      ・匙を投げる
      あとなんだ。

      • by Anonymous Coward on 2018年06月26日 21時20分 (#3432729)

        身を投げる?

        親コメント
      • by Anonymous Coward

        PowerShellでのテストだけど、DateTime.Parseで例外発生するよ?

        • by Anonymous Coward

          このへんな日付は ときどき日本にいるのです。たぶん。
          主に進捗が芳しくないプロジェクトとかに。

        • by Anonymous Coward

          .Netでなく、VBS/VBA/Excel/Access等のDateSerial 関数 [microsoft.com]でやってみてください。

          PowerShellで確認したいなら必ずWSHが呼べるx86版で、下記のコードをどうぞ。
          悍ましいものが見れます。

          $obj = New-Object -ComObject "MSScriptControl.Scriptcontrol"
          $obj.Language = "VBScript"
          $obj.Eval("DateSerial(2018,12,32)")

          • by Anonymous Coward

            元のストーリーが元号に関するものなんだから、処理内容は文字列から日付への変換だということがなんで分からないかな。
            この場合はDateSerialじゃなくてCDate。

            $obj = New-Object -ComObject "MSScriptControl.Scriptcontrol"
            $obj.Language = "VBScript"
            $obj.Eval("CDate(""2018/12/31"")")
            # 2018年12月31日 00:00:00
            $obj.Eval("CDate(""2018/12/32"")")
            # HRESULT からの例外:0x80020101
            # 発生場所 行:1 文字:1
            # + $obj.Eval("CDate(""2018/12/32"")")
            # + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            # + CategoryInfo : OperationStopped: (:) [], COMException
            # + FullyQualified

  • by Anonymous Coward on 2018年06月26日 17時26分 (#3432533)

    理想に近い仕様変更では?

    • いや、平成32年とかより、明治5年の改暦以前の和暦変換をちゃんと実装してほしい。
      明治元年閏卯月三日(慶應義塾が三田に出来た日)とか。

      親コメント
      • by Anonymous Coward

        天保暦だけに対応すればいいって訳でもないのでキリがない

        # ユリウス日から算出するのを考えましたが挫折しました

    • by Anonymous Coward

      .NET Framework ver.2.0までバックポートとなるとテスト
      工数を考えると頭痛が痛くなる人はいるかもしれない。
      4以上か、せめてWin7に載ってった3.5までにしてほしかったかも。

    • by Anonymous Coward

      既定が従来の動作でない点と4.5.2以前の動作をプロセスごとに変更できない点が残念

    • by Anonymous Coward

      仕様変更だからあかん。
      仕様変更のおかげで以前はエラーで転けてたアプリがちゃんと動くようになった! やったね! みたいなのは、趣味の日曜プログラミングぐらいでしかあり得ない。
      変なのを食わせても西暦に変換してくれる関数を別途追加すれば良かった。

      • by Anonymous Coward
        しかも「??10年」の設定がレジストリから消えたら以前はちゃんと動いてたアプリがエラーで転けるようになるという。
        やっぱりこれ元号発表しない政府(とそんな政府を支持する愚民ども)に対する嫌がらせでしょ。
      • by Anonymous Coward

        昭和65年がエラーになる仕様をどうしても維持したいのなら、AppConfigに設定を追加する必要があるが、たいした手間でもなかろう。

        大半のシステムは、今回のMicrosoftの対応のおかげで、ソースコード変更なし、再テストのみで済むのではないか。

        • by Anonymous Coward

          じゃあ、AppConfigに設定を追加するだけで済んだぁ! やったね!
          から、どうやって、新たに追加された「はみ出た入力でもきちんと変換できる機能」を使うプログラムに移行していくおつもりで?

          どこに設定を追加しなきゃならないかを調べようとしたら、どうせ、全ソースに全文検索かけるような手間が必要なわけで、そこで新APIへ置換してしまっても手間は変わらない。

          • by Anonymous Coward

            AppContext に値を設定するだけなら

            > どこに設定を追加しなきゃならないかを調べようとしたら、どうせ、全ソースに全文検索かけるような手間が必要なわけで、そこで新APIへ置換してしまっても手間は変わらない。

            とかいった手間は別に必要ないような.
            4.5.2 以前向けのレジストリへの設定も,ソースのリンク先見るだけで判りますよ.

          • by Anonymous Coward

            こいつプログラム書いたことないだろ

    • by Anonymous Coward

      「そんなローカルの古臭い風習までいちいち面倒見るわけがねえだろうがボケェ!西暦を使え!!どうしても使いたいなら自分で実装しろ!!!」って言って、西暦以外に対応しないのが普通の社会を作る後押しをしてくれるのが理想

      • by Anonymous Coward

        元号発表を直前にすることで西暦の後押しをしようとした(◎本会議談)

  • by Anonymous Coward on 2018年06月26日 17時57分 (#3432554)

    リンク先本文読むと、3.5の現行の動作の解説として、2.0/3.0も同様の動作であると書いてあるのみであって、
    更新の対象は3.5だけで、2.0/3.0は含まれないよね?

    • by Anonymous Coward

      別ツリーのコメントにもあるけど、2.0~3.5のランタイムプログラムは同じもの。
      しかもこのランタイムの年号処理は「モジュール内にハードコーディングしてある」ということなので、3.5のみ変更の方が無理っぽい

  • by Anonymous Coward on 2018年06月26日 18時11分 (#3432566)

    どうなってんの!

    まだ死滅してないので、対応があるのか、あるいは無いのかぐらいは知りたいのだけど。
    おそらく対応しないんだろうな、とは思うのだけど、公式な発表があるかないかは大違いなので…。

    VBAについてはOfficeが対応すれば対応するのかな。
    Officeの対応状況も知りたい所なんだけど、発表しないのだろうか。

    • by nezuku (25740) on 2018年06月26日 23時09分 (#3432817)

      4月に新元号に対応に関する各プロダクトの対応状況等についてセミナーがあったそうで
      (今後もあるとは思いますが・・・)
      https://blogs.technet.microsoft.com/mpn_japan/2018/04/12/readiness-for... [microsoft.com]
      参加した方のレポートがQiitaにあります。
      https://qiita.com/You_name_is_YU/items/3f6f9825c2d1c97c5ea6 [qiita.com]

      質問にてVB6周りも質問が出たようですが、
      ・ランタイムは現行サポートOSに組み込まれているものは対応範囲内
      ・VB6そのものはサポート終了により対象外
      との回答のようですね。

      親コメント
      • by Anonymous Coward

        マイクロソフトが追加しないのであれば、一般ユーザー同士でCP932のどこに新元号の合字を追加するのかのコンセンサスを得たいです。

        • by Anonymous Coward

          一般ユーザー「CP932ってなにそれおいしいの」

        • by Anonymous Coward

          無理言うな。外字領域を使い倒しているユーザがどれだけいるのか考えてみろ。

      • by Anonymous Coward

        情報ありがとうございます。

        VB6ランタイムはOS依存ということは、当面はサポートされるってことですね。
        Format(来年, "ggge")で新元号が出るし、CDate("新元号1年5月1日") はエラーにならない、と期待して良いのかな。

        一方、VB6のIDEはサポート外、ってことは、IDE上で実行するとエラーになるのかな。
        ※OSにインストールされているランタイムに依存するならエラーにならない?

        VBScriptに関してもOSに依存しそうなので、現役のOSなら大丈夫そうですね。

        いずれにせよ、公式で発表して欲しい所です…。

  • by Anonymous Coward on 2018年06月28日 10時21分 (#3433810)

    Windows7のWindowsUpdateも用意されるの?

  • 工数たくさん貰えるかなぁ・・・

typodupeerror

人生の大半の問題はスルー力で解決する -- スルー力研究専門家

読み込み中...