当应用程序在存储它的计算机上运行时加载时间,但是,当它在工作组上加载时,在另一台计算机上它不会加载时间(即使其他所有工作都应该如此)。
我已经为使用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]}";
}
}
这是预期的结果,也是我在本地运行应用程序时得到的结果。
这是我在工作组上的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
),它将节省一些内存分配创建阵列和中间串。