为了账号安全,请及时绑定邮箱和手机立即绑定

为什么当应用程序在我的计算机上运行时 System.DateTime.Now 工作

为什么当应用程序在我的计算机上运行时 System.DateTime.Now 工作

C#
拉丁的传说 2022-12-24 12:31:17
当应用程序在存储它的计算机上运行时,它会加载时间,但是,当它通过工作组加载时,在另一台计算机上它不会加载时间(即使其他一切都正常工作)。我已经为 Windows 使用 Unity 和 C# 制作了一个应用程序,它需要能够从系统加载今天的日期,并且当应用程序在存储它的计算机上运行时它可以工作(应用程序不需要安装),但是,当我尝试从另一台计算机通过工作组运行它时,它不会加载时间。我已经测试了应用程序中的所有其他内容,唯一似乎出现故障的函数是 DateTime.Now 函数。我还尝试用 DateTime.Today、System.DateTime.Now 和其他一些变体替换它,但都没有成功。public class TestTodayDate : MonoBehaviour{    public Text text;    void Start()    {        DateTime today = DateTime.Now;        string[] day = today.ToString("d").Split('/');        text.text = $"{day[1]}.{day[0]}.{day[2]}";    }}这是预期的结果,也是我在本地运行应用程序时得到的结果。这是我在工作组上的两台不同计算机上运行它时得到的结果。
查看完整描述

1 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

"d"格式字符串使用系统级配置的短日期字符串格式。个人可以根据需要在他们的系统上更改此格式。因此,如果您需要依赖以某种方式查看的结果,则不应使用"d"格式字符串。


相反,您可能会想这样做:


void Start()

{

    DateTime today = DateTime.Now;

    string[] day = today.ToString("dd/MM/yyyy").Split('/');

    text.text = $"{day[1]}.{day[0]}.{day[2]}";

}

但这也不完全正确。在 .Net 日期格式字符串中,该/字符具有特殊含义,它代替系统日期分隔符。同样,根据操作系统中存在的文化或自定义设置,此值可能与您的预期不同。


你真正应该做的是:


void Start()

{

    text.text = DateTime.Now.ToString("d.M.yyyy");

}

这将始终提供预期值(尽管我不得不猜测日期格式,无论您是否期望0在月初看到领先),并且它将为您节省一些创建数组和中间字符串的内存分配.


查看完整回答
反对 回复 2022-12-24
  • 1 回答
  • 0 关注
  • 56 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信