Safely get the UTC for a given input. - CSharp System

CSharp examples for System:DateTime UTC

Description

Safely get the UTC for a given input.

Demo Code

/*//from  w ww .j  a  va  2  s .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{
        //--- 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