簡體   English   中英

為什么在計算機上運行該應用程序時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?

當應用程序在存儲在其上的計算機上運行時,它會加載時間,但是,當它通過工作組加載時,在另一台計算機上卻不會加載時間(即使其他所有功能都可以正常工作)。

我已經為使用Unity和C#的Windows制作了一個應用程序,該應用程序需要能夠從系統加載今天的日期,並且在存儲該應用程序的計算機上運行該應用程序時該應用程序可以工作(該應用程序不需要安裝),但是,當我嘗試從另一台計算機通過工作組運行它時,它不會加載時間。 我已經測試了應用程序中的其他所有內容,並且似乎出現故障的唯一函數是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]}";
    }
}

這是預期的結果,也是在本地運行應用程序時得到的結果。

預期結果

這是我在工作組的兩台不同計算機上進行渲染時得到的結果。

實際結果

"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 ),而且可以節省一些內存分配,從而創建了數組和中間值串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM