为什么当应用程序在我的计算机上是 运行 时 System.DateTime.Now 可以工作,但当我通过工作组启动应用程序时却不工作?

Why does System.DateTime.Now work when the application is ran on my computer but does not work when i start the application over workgroup?

当应用程序 运行 在存储它的计算机上时,它会加载时间,但是,当它通过工作组加载时,在另一台计算机上它不会加载时间(即使其他一切都正常工作它应该)。

我已经为 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]}";
    }
}

这是预期结果,也是我在本地 运行 应用程序时得到的结果。

这是我在工作组上的 2 台不同计算机上运行它时得到的结果。

"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 日期格式字符串中,/ 字符具有特殊含义,它代替系统日期分隔符。同样,根据 OS 中存在的文化或自定义设置,此值可能与您期望的不同。

你真正应该做的是:

void Start()
{
    text.text = DateTime.Now.ToString("d.M.yyyy");
}

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