C# 时间戳

1.概要

今天给时间设置唯一索引,发现无法设置成功,后来想用时间戳吧,于是做了这个实验。

2.代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CSharp时间戳
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("CSharp时间戳");
            Program p = new Program();
            p.main();
            Console.ReadKey();
        }
        private void main() {
            TimestampChange10 timestampChange10 = new TimestampChange10(new GetTimeSpan());
            string str10 = timestampChange10.GetTimeStamp();
            Console.WriteLine(str10);
            Console.WriteLine(timestampChange10.TimeStampToDateTime(long.Parse(str10)).ToString());

            TimestampChange13 timestampChange13 = new TimestampChange13(new GetTimeSpanUtc());
            string str13 = timestampChange13.GetTimeStamp();
            Console.WriteLine(timestampChange13.GetTimeStamp());
            Console.WriteLine(timestampChange13.TimeStampToDateTime(long.Parse(str13)).ToString());
        }

        /// <summary>
        /// 获取时间差-接口
        /// </summary>
        interface IGetTimeSpan
        {
            TimeSpan getTimeSpan(DateTime dateTime);
        }
        /// <summary>
        /// 时间转换-接口
        /// </summary>
        interface ITimestampChange {
            string GetTimeStamp();
            DateTime TimeStampToDateTime(long timeStamp);
        }
        /// <summary>
        /// 时间转换-抽象
        /// </summary>
        abstract class TimestampChange : ITimestampChange
        {
            protected DateTime dateTime1970 = new DateTime(1970, 1, 1, 0, 0, 0, 0);

            public abstract string GetTimeStamp();
            public abstract DateTime TimeStampToDateTime(long timeStamp);
        }
        /// <summary>
        /// 时间差
        /// </summary>
        class GetTimeSpan : IGetTimeSpan
        {
            public TimeSpan getTimeSpan(DateTime dateTime)
            {
                TimeSpan ts = DateTime.Now - dateTime;
                return ts;
            }
        }
        /// <summary>
        /// 时间差
        /// </summary>
        class GetTimeSpanUtc : IGetTimeSpan
        {
            public TimeSpan getTimeSpan(DateTime dateTime)
            {
                TimeSpan ts = DateTime.UtcNow - dateTime;
                return ts;
            }
        }
        
        /// <summary>
        /// 10位时间戳
        /// </summary>
        class TimestampChange10 : TimestampChange
        {
            readonly IGetTimeSpan getTimeSpan;
            public TimestampChange10(IGetTimeSpan getTimeSpan) {
                this.getTimeSpan = getTimeSpan;
            }
            /// <summary>
            /// 时间转化成时间戳
            /// </summary>
            /// <returns></returns>
            public override string GetTimeStamp()
            {
                return Convert.ToInt64(getTimeSpan.getTimeSpan(dateTime1970).TotalSeconds).ToString();
            }
            /// <summary>
            /// 时间戳转化成时间
            /// </summary>
            /// <param name="timeStamp"></param>
            /// <returns></returns>
            public override DateTime TimeStampToDateTime(long timeStamp)
            {
                return dateTime1970.AddSeconds(timeStamp).ToLocalTime();
            }
        }
        /// <summary>
        /// 13位时间戳
        /// </summary>
        class TimestampChange13 : TimestampChange
        {
            readonly IGetTimeSpan getTimeSpan;
            public TimestampChange13(IGetTimeSpan getTimeSpan)
            {
                this.getTimeSpan = getTimeSpan;
            }
            /// <summary>
            /// 时间转化成时间戳
            /// </summary>
            /// <returns></returns>
            public override string GetTimeStamp()
            {
                return Convert.ToInt64(getTimeSpan.getTimeSpan(dateTime1970).TotalMilliseconds).ToString();
            }
            /// <summary>
            /// 时间戳转化成时间
            /// </summary>
            /// <param name="timeStamp"></param>
            /// <returns></returns>
            public override DateTime TimeStampToDateTime(long timeStamp)
            {
                return dateTime1970.AddMilliseconds(timeStamp).ToLocalTime();
            }
        }
    }
}

3.运行效果

 4.附记

DateTime.Now 没有 DateTime.UtcNow时间准。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#中,可以使用以下代码将时间转换为日期格式输出: ```csharp using System; using UnityEngine; private void Start() { DateTime dateTime = TimestampHelper.GetDateTime(1482115779); Debug.Log(dateTime.Year + "年" + dateTime.Month + "月" + dateTime.Day + "日"); DateTime dateTime_2 = TimestampHelper.GetDateTime("1482115779"); Debug.Log(dateTime_2.Hour + ":" + dateTime.Minute + ":" + dateTime.Second); } public static DateTime GetTime(long TimeStamp, bool AccurateToMilliseconds = false) { System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区 if (AccurateToMilliseconds) { return startTime.AddTicks(TimeStamp * 10000); } else { return startTime.AddTicks(TimeStamp * 10000000); } } ``` 这段代码使用了一个名为`TimestampHelper`的静态类来实现时间转换日期的功能。在`Start()`方法中,我们首先使用`TimestampHelper.GetDateTime()`方法将时间转换为`DateTime`类型的日期时间对象,然后通过访问`DateTime`对象的属性来获取具体的年、月、日等信息,并通过`Debug.Log()`方法将其输出。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [C# 工具类:时间转换日期格式](https://blog.csdn.net/qq_43505432/article/details/114676442)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [C# 时间转日期](https://blog.csdn.net/weixin_44171249/article/details/125658767)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [C# DateTime与时间转换实例](https://download.csdn.net/download/weixin_38638312/12778561)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值