當應用程序在存儲它的計算機上運行時,它會加載時間,但是,當它通過工作組加載時,在另一臺計算機上它不會加載時間(即使其他一切都正常工作)。我已經為 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在月初看到領先),并且它將為您節省一些創建數組和中間字符串的內存分配.
- 1 回答
- 0 關注
- 99 瀏覽
添加回答
舉報
0/150
提交
取消