如何在不更改格式的情况下返回 DateTime

Posted

技术标签:

【中文标题】如何在不更改格式的情况下返回 DateTime【英文标题】:How can return DateTime without change the format 【发布时间】:2016-02-05 12:13:00 【问题描述】:

我有 DateTimes 列表,并且我想以某种格式获取 DateTime 以显示小时分钟秒。例如,我有来自 en-US 文化的 2015 年 12 月 22 日下午 4:32,如果我使用 bg-BG 则返回 16:32 22 Декември (意思是 12 月)2015。好吧是返回 4:32 22 Декември 2015。

这是我的简单代码。

List<DateTime> xAxises = SetListOfDateTimes();
var culture = Thread.CurrentThread.CurrentCulture;

for (int i = 1; i <= xAxises.Count; i++)

    string someTime = xAxises.ElementAt(i - 1).ToString("hh:mm:ss tt", Thread.CurrentThread.CurrentCulture = culture);
    string anotherTime = xAxises.ElementAt(i - 1).ToString("ddd, dd MMMM hh:mm:ss tt", Thread.CurrentThread.CurrentCulture = culture);
    string thirdTime = xAxises.ElementAt(i - 1).ToString("dd MMMM yyyy", Thread.CurrentThread.CurrentCulture = culture);
    string fourthTime = xAxises.ElementAt(i - 1).ToString("MMMM yyyy", Thread.CurrentThread.CurrentCulture = culture);

我真正的问题是我很少有使用 bg-BG 格式的 DateTimes 并且在someTime 中以 en-US 格式返回。当DateTime 是 21:22:30 时,someTime 是 9:22:30。我想在 21:22:30。我放了tt,因为如果是en-US 中的文化,我的申请可能会在美国使用。

任何知道如何正确返回当前文化的 DateTime 的人。

【问题讨论】:

你能更好地解释你所看到的吗?文化只有在你打电话给.ToString(...) 时才会发挥作用,DateTime 本身并没有文化。你看过NodaTime吗? 这个问题没有多大意义。 DateTime 值没有任何格式或文化。它们是二进制值,而不是字符串。另一方面,在格式化或解析 时使用的文化是当前文化。请发布代码,显示您尝试了什么、您期望什么以及您得到了什么。您发布的内容与传递任何文化基本相同 顺便说一句,默认情况下没有文化使用 24 小时。我怀疑问题不在于文化,而在于自定义格式 @PanagiotisKanavos - 大胆断言,我们在德国有 24 小时制。事实上,我想,12 小时制主要用于英语国家。 @EvgeniVelikovevelikov 请确保您系统的文化 BG 或发布更改文化的代码。如果您的文化 BG,您将获得14:53,例如DateTime.Now.ToString("t"),或5.2.2016 г. 14:51:55 获得DateTime.Now.ToString()。但是,如果您已将开发机器设置为英语语言环境,则需要输入 DateTime.Now.ToString("t",new System.Globalization.CultureInfo("bg-BG")) 【参考方案1】:

好吧,如果你说你想要 12 小时格式,你就明白了。试试HH 而不是hh(见msdn)。

ToLongTimeString()。还有一些,至少是longshort 版本的time 和`date。

顺便说一句,DateTime.Now.ToLongDateString() 给了我Freitag, 5. Februar 2016 而无需明确指定文化。

【讨论】:

【参考方案2】:

如果要获取 24 小时格式的时间字符串,应在 ToString 函数中使用时间格式“HH:mm:ss”。 您可以在此处阅读有关日期和时间格式的更多信息: https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx

【讨论】:

以上是关于如何在不更改格式的情况下返回 DateTime的主要内容,如果未能解决你的问题,请参考以下文章

如何在不丢失格式的情况下更改 Word.Range 文本

如何在不更改 Vue 中的 url 的情况下返回 404 错误?

如何编写一个函数,在不使用返回的情况下更改原始整数列表?

vba 如何在不更改值的情况下自定义格式单元格

springdoc-openapi 如何在不更改 toString 的情况下使用 @JsonValue 枚举格式?

在不更改时间的情况下设置时区 - Python