Unity时间转换方式

简介: **时间戳与 DateTime 的转换简介**时间戳是从1970年1月1日00:00:00起的秒数,可转为 DateTime 对象。DateTime 转时间戳则是计算与1970年1月1日的时间差。秒数与时分秒格式互转基于60进制换算规则。Unity 中可通过 Time 类处理游戏时间,并与其他时间格式进行换算,需考虑时区等差异。示例代码展示了 Unity 中计时器的实现及总用时转换成时分秒的两种方法。

时间戳与 DateTime 的转换
时间戳转 DateTime
原理:时间戳是指格林威治时间 1970 年 01 月 01 日 00 时 00 分 00 秒 (北京时间 1970 年 01 月 01 日 08 时 00 分 00 秒) 起至现在的总秒数。在 Unity 中,可以通过将时间戳的值作为参数,创建一个 DateTime 对象。在底层,.NET 框架会根据时间戳的值计算出对应的年、月、日、时、分、秒等时间分量,从而构建出一个具体的日期时间对象。
DateTime 转时间戳
原理:获取 DateTime 对象所表示的时间与 1970 年 1 月 1 日 00:00:00 之间的时间间隔,然后将这个时间间隔转换为秒数或毫秒数,这个数值就是对应的时间戳。计算过程中,会考虑到闰年、每月的天数不同等历法规则,精确计算出两个时间点之间的时间差。
秒数与时分秒格式的转换
秒数转时分秒
原理:基于 60 进制的时间换算规则。首先将总秒数除以 3600,得到的商就是小时数;然后将总秒数对 3600 取余,得到剩余的秒数,再将这个余数除以 60,得到的商就是分钟数;最后将上一步的余数作为秒数。
时分秒转秒数
原理:将小时数乘以 3600,分钟数乘以 60,然后将这两个结果与秒数相加,就得到了对应的总秒数。
Unity 时间格式与其他时间格式的转换
原理:Unity 中有自己的时间表示和管理方式,如 Time 类用于处理游戏中的时间相关操作。要将 Unity 的时间格式与其他时间格式进行转换,通常需要根据各自的时间基准和单位进行换算。例如,将 Unity 的游戏时间(以秒为单位)转换为 DateTime 格式时,需要确定一个起始时间点,然后根据游戏时间的流逝计算出对应的 DateTime。在转换过程中,需要考虑到不同系统或平台的时间差异、时区设置等因素,以确保时间转换的准确性。
一、计时器的写法

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ShiJian : MonoBehaviour {
    public Text text;
    public Text text1;
    float SpendTime;
    int hour;int minute;int second;int milliScecond;
    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {
        DateTime Time1 = DateTime.Now.ToLocalTime();
        text.text = Time1.ToString("yyyy-MM-dd HH:mm:ss");

        SpendTime += Time.deltaTime;
        hour = (int)SpendTime / 3600;
        minute = (int)(SpendTime - hour * 3600 )/60;
        second = (int)(SpendTime - hour * 3600 - minute * 60);
        milliScecond = (int)((SpendTime - (int)SpendTime) * 1000);
        text1.text = string.Format("{0:D2}:{1:D2}:{2:D2}:{3:D3}",
            hour, minute, second,milliScecond);
    }
}

二、第二种转换方式-总用时转换成时分秒(两种方式)

if (aa)
        {
            Shi = Convert.ToInt32(field.text) / 3600;           
            Fen = Convert.ToInt32(field.text) % 3600 / 60;
            miao = Convert.ToInt32(field.text) % 60;
            text.text = Shi + ":" + (int)Fen + ":" + miao;

        }
        if (aa )
        {
            Shi = (int)Convert.ToInt32(field.text) / 3600;
            Fen = (int)(Convert.ToInt32(field.text) - Shi * 3600) / 60;
            miao = (int)(Convert.ToInt32(field.text) - Shi * 3600 - Fen * 60);
            text.text = Shi + ":" + (int)Fen + ":" + miao;
        }
相关文章
|
7月前
|
安全 数据安全/隐私保护
阿里云账号注册流程图:企业账户和个人账户实名认证以及常见问题解答
注册阿里云账号仅需一个可接收短信验证码的手机号,支持个人与企业用户。注册后需实名认证方可充值购买产品,推荐使用支付宝快速完成认证。一个手机号最多注册6个账号,遗忘密码或账号可凭手机号找回。
532 0
|
12月前
|
数据采集 机器学习/深度学习 编解码
从零复现Google Veo 3:从数据预处理到视频生成的完整Python代码实现指南
本文详细介绍了一个简化版 Veo 3 文本到视频生成模型的构建过程。首先进行了数据预处理,涵盖了去重、不安全内容过滤、质量合规性检查以及数据标注等环节。
828 5
从零复现Google Veo 3:从数据预处理到视频生成的完整Python代码实现指南
|
API 开发者
了解 HTTP 的PUT 与 POST方法的综合指南
HTTP PUT 和 POST 方法是构建 Web 应用与 API 的核心工具,用于资源的创建与更新。PUT 方法通过指定 URL 更新或创建完整资源,具有幂等性;而 POST 方法更灵活,主要用于创建新资源,但不具备幂等性。本文详细对比了两者在请求体、URL 使用、资源处理等方面的区别,并提供了实际应用示例,帮助开发者根据场景选择合适的方法以优化 API 设计。
|
安全 网络安全
NIST
NIST
1151 5
|
图形学
【unity知识点】实现延迟调用——InvokeRepeating Invoke CancelInvoke Coroutine使用介绍
【unity知识点】实现延迟调用——InvokeRepeating Invoke CancelInvoke Coroutine使用介绍
1172 0
|
JavaScript 安全 前端开发
掌握Deno:新一代安全的JavaScript和TypeScript运行时
【10月更文挑战第15天】Deno是由Node.js创始人Ryan Dahl发起的新一代JavaScript和TypeScript运行时,旨在解决Node.js的设计问题,提供更安全、现代的开发体验。本文介绍Deno的核心特性、优势及使用方法,包括安全性、统一的运行时、现代Web标准和内置工具等,帮助开发者快速上手Deno,适用于Web开发、工具开发和教育等领域。
|
开发工具 图形学
【推荐100个unity插件之11】Shader实现UGUI的特效——UIEffect为 Unity UI 提供视觉效果组件
【推荐100个unity插件之11】Shader实现UGUI的特效——UIEffect为 Unity UI 提供视觉效果组件
2942 0
|
机器学习/深度学习 计算机视觉
【机器学习】LoFTR:革命性图像特征批评技术等领跑者
【机器学习】LoFTR:革命性图像特征批评技术等领跑者
1131 1