投稿者 まっさん  (社会人) 投稿日時 2018/5/27 16:25:04
魔界の仮面弁士様、前回に引き続き、返信ありがとうございます。

Ticksプロパティの存在は知っていたので今回の質問をする前にも試したのですが小数点7桁まで
取得できなかったので、あきらめた経緯があります。ごみコードなので消去してしまいましたが、多分
以下のようだったと思います。
  Dim dt As DateTime = DateTime.Now
  Console.WriteLine(dt.Ticks / 1000000000 * 100)


"fffffff"カスタム書式は今回の件を調査していて以下のURLで初めて知りました。
このURLは過去に何度も見ているのに、日付にこのような精度は必要ないと思いスルーしていたものと思います。
https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/custom-date-and-time-format-strings#the-fffffff-custom-format-specifier
このようなカスタム書式があるなら、DateTime.ToString(String, IFormatProvider)メソッドで十分で、
わざわざ拡張メソッドを作る必要もなかったと思っています。でも、昨夜色々調査して、せっかく作ったので........
VB2015以降のコードを書いてもらったのに、最初に自分の環境を書かなくて申し訳ありません。
自分はVB2010です。新しい構文は試せませんが、今後アップデートした時、参考にさせていただきます。
一応、以下が自分なりに考えた現時点での最終コードです。
  Public Enum enumDateFormat
        Fullf7 '"MM/dd/yyyy HH:mm:ss.fffffff" 
        Fullf3 '"MM/dd/yyyy HH:mm:ss.fff" 
        DayAndTime '"MM/dd/yyyy HH:mm:ss" 
        DayOnly '"MM/dd/yyyy" 
    End Enum

    <Runtime.CompilerServices.Extension()>
    Public Function ToStringリテラル(dt As DateTime, format As enumDateFormat) As String
        Select Case format
            Case enumDateFormat.Fullf7
                Return dt.ToString("\#MM/dd/yyyy HH:mm:ss.fffffff\#", CultureInfo.InvariantCulture)
            Case enumDateFormat.Fullf3
                Return dt.ToString("\#MM/dd/yyyy HH:mm:ss.fff\#", CultureInfo.InvariantCulture)
            Case enumDateFormat.DayAndTime
                Return dt.ToString("\#MM/dd/yyyy HH:mm:ss\#", CultureInfo.InvariantCulture)
            Case enumDateFormat.DayOnly
                Return dt.ToString("\#MM/dd/yyyy\#", CultureInfo.InvariantCulture)
            Case Else
                Return String.Empty
        End Select
    End Function