asp.net - java calendar类的如下操作 在.net c#中要怎么实现?
大家讲道理
大家讲道理 2017-04-17 14:53:48
0
1
932

Java has Calendar Class, but C# doesn't. How to implement the below Java function in C#?

//获得从昨天开始的时间 in Java
    public static long yesterdayBeginTime() {
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.DATE, -1);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTimeInMillis();
    }
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全員に返信(1)
迷茫

他の投稿ですでに回答済みです http://segmentfault.com/q/1010000003707587

主な理由は、C# と Java の時間表現が少し異なることです

  • C# は Tick (100 ナノ秒) を使用し、Java はミリ秒を使用します。

  • C# は 0001-1-1 から始まり、Java は 1970-1-1 から始まります

したがって、次の 2 つの変換メソッドは Viti.Util からコピーされたコードです。

 /// <summary>
        /// 1970 年 1 月 1 日から指定された日付までのミリ秒数を計算します。これは Java の <c>java.util.Date.getTime()</c> によって返される値と同じです。
        /// 概要>
        /// <param name="値"></param>
        /// <param name="タイムゾーン"></param>
        /// <returns></returns>
        public static long ToJavaMilliseconds(この DateTime 値、TimeZoneInfo タイムゾーン = null)
        {
            DateTime date1970 = new DateTime(1970, 1, 1, 0, 0, 0);
            date1970 = TimeZoneInfo.ConvertTimeFromUtc(date1970, タイムゾーン ?? TimeZoneInfo.Local);
            return (value.Ticks - date1970.Ticks) / 10000;
        }

        /// 
        /// Java の時刻および <c>long</c> 型データに応じて、<cref="DateTime" /> 型データに復元されます。
        /// 概要>
        /// <param name="値"></param>
        /// <param name="タイムゾーン"></param>
        /// <returns></returns>
        public static DateTime FromJavaMilliseconds(long 値、TimeZoneInfo タイムゾーン = null)
        {
            DateTime date1970 = TimeZoneInfo.ConvertTimeFromUtc(
                new DateTime(1970, 1, 1)、タイムゾーン ?? TimeZoneInfo.Local);
            新しい DateTime (date1970.Ticks + 値 * 10000) を返します。
        }
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート