我正在开发在位于中央时区的系统上执行的C#.Net应用程序。应用程序使用它们提供的API从第三方获取信息。我已经使用WSDL生成我的应用程序访问该API的代码...他们的报告API允许您为报告定义开始日期和结束日期。这些是C#DateTime字段和XSD:dateTime。现在,当我设置开始日期和结束日期并允许API创建SOAP消息时,日期并不总是包含时区,除非我使用ToLocalTime方法设置日期字段;但是,该方法将在中央时区(CST)中创建日期时间字段,但我需要让它在太平洋时区(PST)中创建这些字段。如果我将我的机器时间设置为PST,那么一切都很好......但当然这会导致其他时间问题。我可以使用什么方法来控制DateTime的格式?或者,是否有可以在C#中设置的应用程序设置,允许时区控制?如何控制System.Xml.Serialization中或应用程序执行期间的时区格式?
回答
我想你可以通过使用System.TimeZoneInfo来实现这一点。例如:
TimeZoneInfo.ConvertTime(myLocalTime, TimeZoneInfo.FindSystemTimeZoneById(“Pacific Standard Time”));
尝试对WSDL生成的类的日期时间字段进行赋值时发生此问题的变化---我必须记录SOAP消息才能查看发送的内容......唯一的情况是时区是在使用ToLocalTime方法时 - 使用应用程序正在执行的机器的时区。 – Beal 2010-05-30 22:30:42
我想你有两个选择。显然你可以做什么取决于目标系统如何处理它接收的日期时间。
1-将日期时间转换为目标时区并发送没有时区信息的请求。这将假定目标系统将接受没有时区信息的日期时间作为PST时区。
2-更改为使用DateTimeOffset。这将允许您明确指定时区偏移量,并将与您指定的时区信息一起序列化。
如果可能,我会选择2.
我也试过DateTimeOffset,我真的很喜欢...但WSDL生成的类有数据元素类型为DateTime ....我永远不会得到使用DateTimeOffset的变体有时区....是你暗示我修改了由WSDL生成的类? – Beal 2010-05-30 22:34:18
@Beal,我想你需要改变生成的类,我意识到这是可怕的做法,我个人会尽量避免它。但至少试着去看看它是否有效,那么如果我们在正确的轨道上,我们可以看到是否有更好的方法来处理这个问题。 – 2010-05-31 17:44:19
试图修改生成的类...这会导致与提供程序(雅虎EWS)的错误...试图找出另一个替代方案.... – Beal 2010-06-07 19:46:13
- 1. 在c#中执行期间终止控制台应用程序
- 2. C# - 控制台应用程序执行期间捕获空格键
- 3. 如何测量C#控制台应用程序运行时间?
- 4. 控制应用程序执行次数
- 5. 日期和时间控制格式
- 6. 如何在Surface RT中执行控制台应用程序
- 7. 如何在Java应用程序中执行控制台commad?
- 8. 如何在控制台应用程序中执行WCF主机?
- 9. 如何在Jquery中使用时区格式化日期时间?
- 10. 如何定期执行程序(到期日期和时间)?
- 11. Flink streaming:如何控制执行时间
- 12. 如何控制执行时间C
- 13. 控制台应用程序以串行方式执行
- 14. 在控制台应用程序运行期间的进度条
- 15. 如何控制NHibernate的日期时间格式?
- 16. SWT应用程序的本地化日期时间控制
- 17. 导出或执行控制台应用程序窗体项目
- 18. 日期时间格式时,应用程序作为Windows服务
- 19. Kohana v3应用程序执行时间
- 20. 如何在应用程序执行期间覆盖logging.properties?
- 21. Java - 执行控制台应用程序时的NetBeans参数
- 22. 如何制作可执行的metro样式的应用程序?
- 23. 如何在应用程序中获取android系统日期和时间格式
- 24. 如何在逻辑应用程序中设置日期时间格式
- 25. 如何控制外部可执行应用程序?
- 26. 如何更改SharePoint日期时间控制格式
- 27. 如何导出或执行控制台应用程序窗体项目
- 28. asp.net中的日期格式与控制台应用程序中的日期格式
- 29. Metro(Windows应用商店应用程序)XAML中的日期时间格式
- 30. 如何获得symfony2应用程序的执行时间?
您是否曾经找到过解决方案? – 2011-01-28 01:44:03
对ToLocalTime方法投票赞成将时区序列化为SOAP消息。保存了我的一天...更像一周。 – 2013-09-23 01:35:45