我想将日期转换为特定格式(例如en-US MM / dd / yyyy),我知道解析它的正常方法。
但在我的情况下,我并不知道源日期格式。源日期格式可能会根据服务器环境进行更改。它可以是en-US或en-GB。
e.g。 DateTime dt = DateTime.Now;
'dt'
可以是'27/03/2014'
或'03/27/2014'
。
如果我不知道源日期格式,如何转换源日期为 en-US 格式?
(字符串格式没问题 - MM / dd / yyyy ,例如"03/27/2014"
)。
答案 0 :(得分:1)
如果您不知道源格式,则在尝试转换时可能会出错。例如,尝试转换:
05/01/2013
在这种情况下,计算机无法识别日期。它可能会产生两个输出:05 Jan, 2013
或01 May, 2013
。
答案 1 :(得分:0)
DateTime.Now.toString("yyyy-MM-dd"); //toString(specify format)
尝试这个
答案 2 :(得分:0)
DateTime result;
if (!DateTime.TryParseExact(inputString, "dd/MM/yyyy", out result)
result = DateTime.ParseExact(inputString, "MM/dd/yyyy");
OR
DateTime result;
if (!DateTime.TryParse(inputString, out result)
result = DateTime.ParseExact(inputString, CultureInfo.InvariantCulture, DateTimeStyles.None);
答案 3 :(得分:0)
如果您知道您的环境永远是决定性因素,为什么不直接使用它?
尝试以下一些变体:
string yourFormat = ... // Whatever is your default format
if(Thread.CurrentThread.CurrentCulture.Name == "en-US")
{
yourFormat = "MM/dd/yyyy";
}
else (if Thread.CurrentThread.CurrentCulture.Name == "en-GB")
{
yourFormat = "dd/MM/yyyy";
}
DateTime d = DateTime.ParseExact(inputString, yourFormat, null)
答案 4 :(得分:0)
如果我不知道源日期格式,如何将源日期转换为en-US格式?
您需要知道源日期格式,然后才能将其转换为所需的日期格式。
正如wiero在评论中正确地说的那样“如果你有01/02/2014取决于2月1日或1月2日。你必须知道如何阅读它。”
DateTime.Now
返回的对象的默认格式将是您在服务器设置中指定的格式,请查看以下屏幕截图:
答案 5 :(得分:0)
参考@ DarkWanderer的评论:
DateTime对象与格式无关。
只需要使用ToString("MM/dd/yyyy")
将其转换为特定格式。
我使用Parse()
方法进行转换但不起作用。 B ToString()
方法肯定是一种方式。
这将有效:dt.Tostring("MM/dd/yyyy");
感谢@DarkWanderer。