Get the utc-based unix epoch time. - CSharp System

CSharp examples for System:DateTime Unix

Description

Get the utc-based unix epoch time.

Demo Code

/*/* www.  j  a  va2s  .  co  m*/
 * MindTouch Dream - a distributed REST framework 
 * Copyright (C) 2006-2014 MindTouch, Inc.
 * www.mindtouch.com  oss@mindtouch.com
 *
 * For community documentation and downloads visit mindtouch.com;
 * please review the licensing section.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *     http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
using System.Globalization;

public class Main{
        /// <summary>
        /// Get the utc-based unix epoch time.
        /// </summary>
        /// <param name="date">Source date.</param>
        /// <returns>Seconds since January 1, 1970 (UTC).</returns>
        public static uint ToEpoch(this DateTime date) {
            return (uint)date.ToSafeUniversalTime().Subtract(Epoch).TotalSeconds;
        }
        //--- Extension Methods ---

        /// <summary>
        /// Safely get the UTC <see cref="DateTime"/> for a given input.
        /// </summary>
        /// <remarks>
        /// Unlike <see cref="DateTime.ToUniversalTime"/>, this method will consider <see cref="DateTimeKind.Unspecified"/> source dates to 
        /// originate in the universal time zone.
        /// </remarks>
        /// <param name="date">Source date</param>
        /// <returns>Date in the UTC timezone.</returns>
        public static DateTime ToSafeUniversalTime(this DateTime date) {
            if(date != DateTime.MinValue && date != DateTime.MaxValue) {
                switch(date.Kind) {
                case DateTimeKind.Unspecified:
                    date = new DateTime(date.Year, date.Month, date.Day, date.Hour, date.Minute, date.Second, DateTimeKind.Utc);
                    break;
                case DateTimeKind.Local:
                    date = date.ToUniversalTime();
                    break;
                }
            }
            return date;
        }
}

Related Tutorials