返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#实现时间戳与标准时间的互转
  • 132
分享到

C#实现时间戳与标准时间的互转

2024-04-02 19:04:59 132人浏览 独家记忆
摘要

目录前言1.标准时间转时间戳的方法2.时间戳转为标准时间3.TimeZone.CurrentTimeZone.ToLocalTime()方法补充前言 C# 时间戳与 标准时间的转其实

前言

C# 时间戳与 标准时间的转其实不难,但需要注意下,基准时间的问题。

格林威治时间起点: 1970 年 1 月 1 日的 00:00:00.000

北京时间起点:1970 年 1 月 1 日的 08:00:00.000

昨天我在这里踩坑了,我用的是格林威治时间计算的时间戳,给计算机监控系统。计算机监控系统拿到时间戳换算后的时间总是跟我的对不上。后来发现是这个原因;

1.标准时间转时间戳的方法


/// <summary>
        /// 获取开停机的时间戳
        /// </summary>
        /// <param name="dtime"></param>
        /// <returns></returns>
        public int getTimeSpan(DateTime dtime)
        {
            //格林威治时间
            //var timeSpan_Greenwich = dtime - new DateTime(1970, 1, 1, 0, 0, 0);
            //标准北京时间
            var timeSpan = dtime - new DateTime(1970, 1, 1, 8, 0, 0);
            //或者这样写北京标准时间
            var timeSpan_beijing = dtime - TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1, 0, 0, 0));
           return (int)timeSpan.TotalSeconds;        }

2.时间戳转为标准时间


/// <summary>  
        /// 时间戳Timestamp转换成日期  
        /// </summary>  
        /// <param name="timeStamp"></param>  
        /// <returns></returns>  
        private DateTime GetDateTime(int timeStamp)
        {
            SaveCommand("timeStamp:" + timeStamp);

            DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
            long lTime = ((long)timeStamp * 10000000);
            TimeSpan toNow = new TimeSpan(lTime);
            DateTime targetDt = dtStart.Add(toNow);

            if (string.IsNullOrEmpty(targetDt.ToString()))
            {
                targetDt = DateTime.Now;
            }

            SaveCommand("time:" + targetDt.ToString());

            return targetDt;
        }

3.TimeZone.CurrentTimeZone.ToLocalTime()方法

这个方法将一个 DateTime 对象,获取其值为对应于 time 的本地时间。可以看到这个方法格林威治的时间 1970-01-01 00:00:00 转为了北京时间 1970-01-01 08:00:00

补充

C#时间戳和格式化日期互转


</pre><pre name="code" class="csharp">using UnityEngine;  
using System.Collections;  
using System;  
  
/// <summary>  
/// C#时间格式转换为时间戳(互转)  
/// 时间戳定义为从格林威治时间 1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。   
/// </summary>  
public class DateTime_TimeStamp : MonoBehaviour  
{  
    protected int m_timestamp;  
  
    /// <summary>  
    /// 获取时间戳Timestamp    
    /// </summary>  
    /// <param name="dt"></param>  
    /// <returns></returns>  
    private int GetTimeStamp(DateTime dt)  
    {  
        DateTime dateStart = new DateTime(1970, 1, 1, 8, 0, 0);  
        int timeStamp = Convert.ToInt32((dt - dateStart).TotalSeconds);  
        return timeStamp;  
    }  
  
    /// <summary>  
    /// 时间戳Timestamp转换成日期  
    /// </summary>  
    /// <param name="timeStamp"></param>  
    /// <returns></returns>  
    private DateTime GetDateTime(int timeStamp)  
    {  
        DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));  
        long lTime = ((long)timeStamp * 10000000);  
        TimeSpan toNow = new TimeSpan(lTime);  
        DateTime targetDt = dtStart.Add(toNow);  
        return targetDt;  
    }  
  
    /// <summary>  
    /// 时间戳Timestamp转换成日期  
    /// </summary>  
    /// <param name="timeStamp"></param>  
    /// <returns></returns>  
    private DateTime GetDateTime(string timeStamp)  
    {  
        DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));  
        long lTime = long.Parse(timeStamp + "0000000");  
        TimeSpan toNow = new TimeSpan(lTime);  
        DateTime targetDt = dtStart.Add(toNow);  
        return dtStart.Add(toNow);  
    }  
  
    void OnGUI()  
    {  
        if (GUILayout.Button("获取当前时间的时间戳"))  
        {  
            DateTime dtNow = DateTime.Now;  
            m_timestamp = GetTimeStamp(dtNow);  
            Debug.Log(string.FORMat("获取当前时间的时间戳 = {0} -> {1}", dtNow.ToString("yyyy-MM-dd hh:mm:ss"), m_timestamp));  
        }  
  
        if (GUILayout.Button("将时间戳转换成日期_1"))  
        {  
            DateTime dt = GetDateTime(m_timestamp);  
            Debug.Log(string.Format("将时间戳转换成日期_1 = {0} -> {1}", m_timestamp, dt.ToString("yyyy-MM-dd hh:mm:ss")));  
        }  
  
        if (GUILayout.Button("将时间戳转换成日期_2"))  
        {  
            DateTime dt = GetDateTime(m_timestamp.ToString());  
            Debug.Log(string.Format("将时间戳转换成日期_2 = {0} -> {1}", m_timestamp, dt.ToString("yyyy-MM-dd hh:mm:ss")));  
        }  
    }  
}  

到此这篇关于C#实现时间戳与标准时间的互转的文章就介绍到这了,更多相关C#时间戳与标准时间互转内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C#实现时间戳与标准时间的互转

本文链接: https://lsjlt.com/news/160642.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#实现时间戳与标准时间的互转
    目录前言1.标准时间转时间戳的方法2.时间戳转为标准时间3.TimeZone.CurrentTimeZone.ToLocalTime()方法补充前言 C# 时间戳与 标准时间的转其实...
    99+
    2024-04-02
  • 【python】时间与时间戳互相转换
    全文一览 一、时间戳转换为时间1.0 获取时间戳1.1 datetime 法1.2 time 法 二、时间转化为时间戳 时间戳 : ,1683876941.119018 时间格式: ...
    99+
    2023-09-02
    python 数据结构 开发语言
  • pandas实现datetime64与unix时间戳互转
    目录datetime64与unix时间戳互转unix 时间戳与pandas中的Timestamp互转datetime模块pandas默认时间格式转换为unix间戳举个栗子样例date...
    99+
    2024-04-02
  • php如何将13位时间戳转换为标准时间戳
    PHP是一种非常流行的编程语言,许多人使用它来开发Web应用程序和网站。在处理时间戳时,您可能需要将13位时间戳转换为标准时间戳。在本文中,我将向您展示如何在PHP中将13位时间戳转换为标准时间戳。什么是时间戳?时间戳是一个用于表示日期和时...
    99+
    2023-05-14
    php php时间戳
  • php怎么将13位时间戳转换为标准时间戳
    这篇文章主要介绍了php怎么将13位时间戳转换为标准时间戳的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php怎么将13位时间戳转换为标准时间戳文章都会有所收获,下面我们一起来看看吧。什么是时间戳?时间戳是一个...
    99+
    2023-07-05
  • Java中实现时间与时间戳的转换
    public static void main(String[] args) { // 格式化日期 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd ...
    99+
    2023-09-30
    java python 开发语言
  • C语言标准时间与秒单位相互转换
    目录1. 时间转换-秒与标准时间的转换2. 时间转换-标准时间转秒前言: 这篇文章介绍 标准时间与秒单位,秒单位与标准时间的转换方式,这份代码一般用在嵌入式单片机里比较多,比如:设置...
    99+
    2024-04-02
  • pandas怎么实现datetime64与unix时间戳互转
    本文小编为大家详细介绍“pandas怎么实现datetime64与unix时间戳互转”,内容详细,步骤清晰,细节处理妥当,希望这篇“pandas怎么实现datetime64与unix时间戳互转”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢...
    99+
    2023-07-02
  • JS实现获取时间已经时间与时间戳转换
    目录获取当前月的第一天获前取n天日期根据两个日期,判断相差天数根据bai两个日期,判断相差月数获取几个月前的输入日期时间戳转换时间时间戳转换时间 - 无时分秒时间戳转换时间-无日期获...
    99+
    2024-04-02
  • golang 实现时间戳和时间的转化
    说实话,golang的时间转化还是很麻烦的,最起码比php麻烦很多,上码好好学学一下 package main import ( "time" "fmt" ) ...
    99+
    2024-04-02
  • javascript实现时间戳转时间的方法
    本篇内容介绍了“javascript实现时间戳转时间的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!javascript实现时间戳转时间...
    99+
    2023-06-14
  • JavaScript实现日期时间转时间戳
    目录1、date.getTime()2、date.valueOf()3、Date.parse(date)4.时间戳转年月日时分秒5.当前时间往前推30天、7天、3天6.获取最近七天日...
    99+
    2024-04-02
  • php时间戳转时间不准如何解决
    这篇“php时间戳转时间不准如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php时间戳转时间不准如何解决”文章吧。问...
    99+
    2023-07-05
  • php 时间戳怎么互转
    在开发网站或者互联网应用程序的过程中,我们经常需要将任意时间转换为时间戳或者将时间戳转换为具体的时间。PHP是一种使用广泛的脚本语言,提供了很多方便的函数来完成这些转换操作。下面我们将介绍如何在PHP中实现时间戳和具体时间的互转。将时间转换...
    99+
    2023-05-14
    php
  • php时间戳如何互转
    这篇“php时间戳如何互转”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php时间戳如何互转”文章吧。将时间转换成时间戳PH...
    99+
    2023-07-05
  • C语言Unix时间戳与本地时间的转化
    本篇内容主要讲解“C语言Unix时间戳与本地时间的转化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言Unix时间戳与本地时间的转化”吧!前言我们平常说时间都说的几点几分几秒,星期几,但是在...
    99+
    2023-06-06
  • C# 时间戳转换实例
    本篇文章主要介绍了C# DateTime与时间戳(11位与13)转换实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧C# /// &l...
    99+
    2023-03-19
    C# 时间戳转换 C# DateTime与时间戳转换
  • JS如何实现获取时间已经时间与时间戳转换
    小编给大家分享一下JS如何实现获取时间已经时间与时间戳转换,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!获取当前月的第一天function getCur...
    99+
    2023-06-29
  • C语言标准时间与秒单位怎么相互转换
    今天小编给大家分享一下C语言标准时间与秒单位怎么相互转换的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. 时间转换-秒与标...
    99+
    2023-06-30
  • python unix时间戳与正常时间转
            有时候业务需要,需要把正常的时间格式与unix时间戳格式进行转换。       在python中转化方式如下,直接利用time中的函数: #! /usr/bin/env python #coding:utf-8 impo...
    99+
    2023-01-31
    时间 python unix
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作