【问题标题】:Return Datetime.Day in persian culture by c#通过 c# 返回波斯文化中的 Datetime.Day
【发布时间】:2018-02-03 11:30:40
【问题描述】:

我打算返回 波斯文化 中的月份。我已经设置了文化并且效果很好。显示的日期是波斯历。但是我需要在某个地方检查该月的确切日期,

例如今天是 2018 年 2 月 3 日,在波斯历中是 1396 年 11 月 14 日,

var date = DateTime.Now 

显示波斯日历中正确的日期时间。但是

var date = DateTime.Now.Day 

显示 3 而不是 14。 我需要 14!我知道我可以将它更改为字符串并获得一天,但它使我的代码如此肮脏,我对这种方式不太感兴趣,因为我在程序的许多部分都使用了它。 有什么办法吗?

【问题讨论】:

  • 顺便说一句,如果您对 DateTime 感到沮丧,我的 Noda Time 库会将日历系统保留在其 LocalDate 和相关类型中 - 所以您真的可以拥有一个“知道" 它在波斯历中。

标签: c# datetime currentuiculture persian-calendar


【解决方案1】:

我想澄清一些事情。

无论如何,DateTime 实例在公历上总是。令人惊讶的是,it has a few constructorsCalendar 作为参数,但我认为此参数不会影响任何关于在内部将其保持为公历的等价物。

如果您想在 特定 日历中获取 DateTime 的某些部分,则需要将该 DateTime 实例作为 that 日历实例上GetXXX 方法的参数调用.

例如;

var today = DateTime.Today;
var persian = new PersianCalendar();
Console.WriteLine(persian.GetDayOfMonth(today)); // 14

这里是 demonstration

【讨论】:

    【解决方案2】:

    您将尝试此代码。

     CultureInfo info = new CultureInfo("fa-Ir");
     info.DateTimeFormat.Calendar = new PersianCalendar();          
     string day= "";
     Thread.CurrentThread.CurrentCulture = info;
     day= DateTime.Now.ToString("dd");
    

    参考此链接:https://archive.codeplex.com/?p=persianculture

    【讨论】:

    • Persian CultureInfo 已经将 PersianCalendar 作为默认日历。再次分配它是没有用的。此外,他的默认文化已经是波斯语,因为他说“DateTime.Now.ToString()”正在打印波斯日期。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-30
    • 2011-06-23
    • 2014-07-10
    • 1970-01-01
    • 2012-05-09
    相关资源
    最近更新 更多