2010-11-01 74 views
2

我用下面的代碼傳遞給我的javascript代碼C#日期時間爲Javascript日期時間

sb.Append("start: new Date(" + Convert.ToDateTime(appointment.AppointmentDate).Subtract(new DateTime(1970, 1, 1)).TotalMilliseconds.ToString() + "),"); 

的問題是,它不包括按照日期進行的時間。我怎樣才能包括時間?

謝謝!

+0

不知[DataContractJsonSerializer](http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer%28v=VS.90%29.aspx)可以被選中爲你做這件事。 – Powerlord 2010-11-01 18:47:46

回答

0

這個問題可能是區域設置,請嘗試:

sb.Append("start: new Date(" + Convert.ToDateTime(appointment.AppointmentDate).Subtract(new DateTime(1970, 1, 1)).TotalMilliseconds.ToString(System.Globalization.CultureInfo.InvariantCulture.NumberFormat) + "),"); 
+0

沒有運氣。我得到這樣的日期:新日期(1288260000000) – Mike 2010-11-01 18:57:23

+0

我的答案在下面,'新日期(<你得到的數字)'數字是毫秒。上面應該的方式,嘗試粘貼在你的網址欄:'javascript:alert(new Date(1288260000000))' – 2010-11-01 19:15:03

+0

@Mike你確定你的AppointmentDate是正確的嗎?所有給出的例子和你給自己的例子至少應該包含某種時間組件。 – Doggett 2010-11-01 19:26:01

0
using System; 

class Program 
{ 
    static void Main(string[] args) 
    { 
     DateTime? myTime = new DateTime(1970, 1, 1, 0, 0, 1); 

     Console.Write(myTime.Value.ToUnixTimeInMs().ToString()); 
     Console.Read(); 
    } 
} 

public static class DateTimeExtensions 
{ 
    private static readonly DateTime unixEpoch = new DateTime(1970, 1, 1); 

    public static double ToUnixTimeInMs(this DateTime dateTime) 
    { 
     return dateTime.Subtract(DateTimeExtensions.unixEpoch).TotalMilliseconds; 
    } 
} 

簡單的傳入的ToUnixTimeInMs()的返回值轉換爲JavaScript日期對象的構造函數。

0

如果你有.NET 3.5+或AJAX Extensions for .NET 2.0,你可能已經有了將JavaScriptSerializer類中的對象轉換爲JavaScript的方法。

添加對System.Web.Extensions的引用。

using System.Web.Script.Serialization; 

... 

var jsSerializer = new JavaScriptSerializer(); 
string jsDate = jsSerializer.Serialize(appointment.AppointmentDate); 

現在,在JS端,你將不得不使用JSON parser撤消JSON序列化。

0

一種方法是使用Date.parse,可以處理更多的格式。

var d = new Date(Date.parse("<your date here>")); 

您需要使用新的日期和Date.parse因爲Date.parse並沒有因爲1970年返回一個日期對象,但毫秒數NNN東西。

1

您可以分析格式爲en-US格式的日期/時間字符串。

將此代碼放入您的aspx頁面並放入SCRIPT標籤,您將在dt變量中使用DateTime值。

var dtString = '<%= MyDateTimeObject.ToString((new System.Globalization.CultureInfo("en-US")).DateTimeFormat) %>'; 

var dt = new Date(dtString);