DateTimeConverter.cs
上传用户:szgaoree
上传日期:2009-01-05
资源大小:74k
文件大小:2k
源码类别:

Ajax

开发平台:

C#

  1. using System;
  2. namespace AjaxPro
  3. {
  4. /// <summary>
  5. /// Provides methods to serialize and deserialize a DateTime object.
  6. /// </summary>
  7. public class DateTimeConverter : IJavaScriptConverter
  8. {
  9. public DateTimeConverter() : base()
  10. {
  11. }
  12. public override object Deserialize(IJavaScriptObject o, Type t)
  13. {
  14. if(!(o is JavaScriptObject))
  15. throw new NotSupportedException();
  16. JavaScriptObject ht = (JavaScriptObject)o;
  17. int Year = (int)JavaScriptDeserializer.Deserialize(ht["Year"].ToString(), typeof(int));
  18. int Month = (int)JavaScriptDeserializer.Deserialize(ht["Month"].ToString(), typeof(int));
  19. int Day = (int)JavaScriptDeserializer.Deserialize(ht["Day"].ToString(), typeof(int));
  20. int Hour = (int)JavaScriptDeserializer.Deserialize(ht["Hour"].ToString(), typeof(int));
  21. int Minute = (int)JavaScriptDeserializer.Deserialize(ht["Minute"].ToString(), typeof(int));
  22. int Second = (int)JavaScriptDeserializer.Deserialize(ht["Second"].ToString(), typeof(int));
  23. int Millisecond = (int)JavaScriptDeserializer.Deserialize(ht["Millisecond"].ToString(), typeof(int));
  24. DateTime d = new DateTime(Year, Month, Day, Hour, Minute, Second, Millisecond);
  25. d = d.AddMinutes(TimeZone.CurrentTimeZone.GetUtcOffset(d).TotalMinutes);
  26. return d;
  27. }
  28. public override string Serialize(object o)
  29. {
  30. if(!(o is DateTime))
  31. throw new NotSupportedException();
  32. DateTime dt = Convert.ToDateTime(o);
  33. dt = dt.ToUniversalTime();
  34. return String.Format("new Date(Date.UTC({0},{1},{2},{3},{4},{5},{6}))",
  35. dt.Year,
  36. dt.Month -1,
  37. dt.Day,
  38. dt.Hour,
  39. dt.Minute,
  40. dt.Second,
  41. dt.Millisecond);
  42. }
  43. public override Type[] SerializableTypes
  44. {
  45. get
  46. {
  47. return new Type[]{typeof(DateTime)};
  48. }
  49. }
  50. public override Type[] DeserializableTypes
  51. {
  52. get
  53. {
  54. return new Type[]{typeof(DateTime)};
  55. }
  56. }
  57. }
  58. }