2011-07-28 8 views
3

JavaScriptでUTCの日付を作成しようとしていて、それをURLクエリリングを介して別のサーバーに渡します。ここでC#はクエリ文字列を取り、それを日付として認識し、新しいC#UTCの日付と比較します。 (私がその日のうちの1つを持っていない限り)それはより難しいと証明している。私はこれを尋ねるstackoverflowの他の質問は表示しません(質問を入力する際に​​表示される '類似のタイトル'または '類似の質問'リスト)。私はthis w3schools articleに基づいて、以下を使用していますJavaScriptでデータを作成するJavascriptで作成されたUTC日付とC#のUTC日付を比較するにはどうすればよいですか?

var currentDate = new Date(); 
var day = currentDate.getUTCDate(); 
var month = currentDate.getUTCMonth(); 
var year = currentDate.getUTCFullYear(); 
var hours = currentDate.getUTCHours(); 
var minutes = currentDate.getUTCMinutes(); 
var seconds = currentDate.getUTCSeconds(); 
var milliseconds = currentDate.getUTCMilliseconds(); 

var expiry = Date.UTC(month,day,year,hours,minutes,seconds,milliseconds); 

結果は、私がこの値を取るかどのようにC#で、だから、この1311871476074

のように見えますクエリ文字列と

  1. 適切な日付に変換し、
  2. はそれを比較しますC#ベースのUTC DateTime変数?

私のロジック/コードの訂正や記事へのリンクは非常に高く評価されます。

ケビン

UPDATE
以下の答えはどちらも私の問題を解決する助け:ルークは、物事のC#の側を手伝ってくれました、そしてレイはJavaScriptのを手伝ってくれました - 残念ながら私は、それらの両方をマークすることはできません答えが、私はできることを望む! JavaScript UTC method

答えて

5

は、あなただけでは、元の「エポック」にそれらを追加する必要がC#でDateTimeに戻って、これらのミリ秒を変換するには1970年1月1日00:00:00 UTCからのミリ秒数を返します。

string rawMilliseconds = Request.QueryString["expiry"]; 

if (string.IsNullOrWhiteSpace(rawMilliseconds)) 
    throw new InvalidOperationException("Expiry is null or empty!"); 

long milliseconds; 
if (!long.TryParse(rawMilliseconds, out milliseconds)) 
    throw new InvalidOperationException("Unable to parse expiry!"); 

DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); 

DateTime expiry = epoch.AddMilliseconds(milliseconds); 
+0

多くのおかげで、これは私がまさに必要です。 – QMKevin

3

datetimeオブジェクトは瞬時を表し、通常はエポックからのミリ秒数で表されます。 JavaScriptでは、あなたはちょうどあなたがあなたのC#アプリケーションに渡すことができます番号(または番号を含む文字列)を持っているからDateTimeオブジェクトを構築今

new Date().getTime() 

を使用することが容易になり、現在の時間のために、この値を取得します。

私はあなたが C# convert UTC int to DateTime objectを参照することができ、そのために

(ジョンスキートはそれのための答えを持っています。):)

+0

上記のLukeの答えは、私が探していたものです。私は私の質問では言及しませんでしたが、JavaScriptを実行しているサーバーは英国に拠点を置いていますが、「expiry」クエリーストリングを受け入れる.NETサーバーは米国にありますので、UTC日付を使用することはJavaSciptとC#この場合、.getTime()は私にとってはうまくいかないでしょう。 – QMKevin

+0

心配はいりません。しかし、JavaScriptでは、 'getTime'はエポックからのミリ秒数を返し、完全にタイムゾーンに依存しないことに注意してください。多くの開発者は、このエポック時間を内部的に使用してすべての時間処理を行い、タイムゾーンが表示されるまで(または「1か月前」のような計算を行う必要がある場合)エポックタイムはUTCでもタイムゾーンでもありません。それらは特定の瞬間を表す単なる数字です。マスタリングに値する。 :) –

+0

フォローアップありがとう、レイ。私はJavaScriptを午前中に突き止めていて、 '見た。getUTCyear'と '.getYear'を比較すると、' .getTime'が 'regular'形式の現在の時刻になると言いました。var expiry = new Date.getTime(); '上記のルークのC#情報との組み合わせで、私が必要としていたものとまったく同じです。両方に感謝! – QMKevin

関連する問題