[请投票结束此事 - 请参阅我的上一条评论。]
您好,
这样的事情:
DateTime.ParseExact("25/12/2008 00:00:00", "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);
在我的开发机器上工作正常但在部署(服务器)之后没有。
我想这与某些时区配置有关。我试过了:
<%@ ... UICulture="en" Culture="en-US" %>
无济于事。请给明信片任何建议。感谢。
基督教
PS:例外:
字符串未被识别为有效的DateTime
PPS:我已经更新了这个问题。我实际上在时间位。对不起!
PPPS: 我现在意识到这一切都与Excel和oledb有关。字符串25/12/2008在服务器上看起来像这样的“12/25/2008 12:00:00 AM”,并且像开发机器上的“25/12/2008 00:00:00”。我将服务器的时区调整到英国无济于事。我还可以做些什么?感谢和抱歉所有这些混乱!!!
答案 0 :(得分:5)
像这样的东西
你最好发布完全失败的内容,以及确切的错误,而不是“类似”失败的内容。
我希望您的示例提供FormatException,因为您要转换的字符串(“25/12/2008”,没时间)与指定的格式不匹配(“dd / MM / yyyy hh:mm:ss “)。
在您的格式中使用hh而不是HH也有点奇怪 - hh是12小时制。
我希望以下任何一种方法都有效。
// No time component
DateTime.ParseExact("25/12/2008", "dd/MM/yyyy", new CultureInfo("en-US"));
// Works for hours <=12, result is always AM
DateTime.ParseExact("25/12/2008 11:00:00", "dd/MM/yyyy hh:mm:ss", new CultureInfo("en-US"));
// Works for hours using 24-hour clock
DateTime.ParseExact("25/12/2008 13:00:00", "dd/MM/yyyy HH:mm:ss", new CultureInfo("en-US"));
答案 1 :(得分:3)
将字符串解析为DateTime时,请始终考虑日期可以包含一个或两个数字的日期和月份。例如,它可以是MM / dd / yyyy或M / d / yyyy或MM / d / yyyy或M / dd / yyyy。如果您使用ParseExact并且不考虑这一点,那么您将获得例外。试试这个:
DateTime date = DateTime.ParseExact(
dateText, // date in string
new string[] { "M/d/yyyy", "MM/dd/yyyy", "M/dd/yyyy", "MM/d/yyyy" }, // formats (you can add more)
CultureInfo.InvariantCulture,
DateTimeStyles.None);
答案 2 :(得分:1)
尝试
DateTime.ParseExact("25/12/2008", "dd/MM/yyyy hh:mm:ss", CultureInfo.InvariantCulture);