c# - 为什么当应用程序在我的计算机上运行时 System.DateTime.Now 工作,但当我通过工作组启动应用程序时不工作?
问题描述
当应用程序在存储它的计算机上运行时,它会加载时间,但是,当它通过工作组加载时,在另一台计算机上它不会加载时间(即使其他一切正常工作)。
我已经为使用 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
在月初看到领先),并且它将为您节省一些创建数组和中间字符串的内存分配.
推荐阅读
- apache-spark-sql - Spark SQL 执行中核心的使用
- javascript - 多个脚本
- sql - 在 Oracle 中运行查询时收到相同的错误
- keycloak - 如何在 keycloak 主题中使用我自己的通用文件?
- amazon-web-services - AWS 是否在 Internet 上提供 EC2 使用报告?
- slurm - 在 SLURM 步骤中获取可用内存
- python - 如何获取对象的属性,条件是该对象的另一个属性
- jquery - 在 MVC5 Url.Content() 中放置一个 JS 变量
- python - 使用 fastT5 将 T5 模型导出到 onnx 时,得到“RuntimeError:形状为 [5, 8, 1, 2] 的输出与广播形状 [5, 8, 2, 2] 不匹配”
- python - python中的独立模拟:pytest