it-swarm.dev

تحويل C # DateTime إلى تاريخ Javascript

لدي وظيفة في جافا سكريبت تتلقى C # DateTime من MVC. إذا كان التاريخ فارغًا ، فيجب أن يُرجع "-" ، وإذا كان تاريخًا صالحًا ، فيجب أن يعرض التاريخ المنسق.

هام: لا يمكن إرسال التاريخ بتنسيق آخر من C #.

جافا سكريبت:

function CheckDate(date) {

  if (date == "Mon Jan 01 0001 00:00:00 GMT+0000 (GMT Daylight Time)")
    return "-";
  else {
    var dat = new Date(date);
    return dat.getFullYear() + dat.getMonth() + dat.getDay();
  }

هل هناك طريقة أفضل للمقارنة إذا كان التاريخ هو C # New DateTime؟

وكيف يمكنني تحليل التاريخ وإرجاعه بتنسيق "yyyy/MM/dd"؟

35
DK ALT

نظرًا للإخراج الذي تعثرت عليه ، لا يمكنني التفكير في أي طريقة أفضل لالتقاط DateTime من 0 على جانب جافا سكريبت.

Date.parse يجب أن تعمل مع احتياجاتك في التحليل ، لكنها تُرجع عدد المللي ثانية ، لذلك تحتاج إلى التفاف مُنشئ تاريخ من حوله:

var date = new Date(Date.parse(myCSharpString));

لتاريخ العودة ، وتريد ببساطة

date.getFullYear() + "/" + (date.getMonth() + 1) + "/" + (date.getDate() + 1);

(date.getMonth و date.getDate مفهرسة 0 بدلاً من 1 مفهرسة.)

كمان: http://jsfiddle.net/GyC3t/

[~ # ~] تحرير [~ # ~] بفضل ملف JoeB ، دعني أقوم بتصحيح. الدالة date.getMonth() مفهرسة 0 ، لكن الدالة date.getDate() مفهرسة. كان "الكمان" يعمل مع +1 لأن date.getMonth يعمل بالتوقيت المحلي ، وهو قبل UTC. لم أتحقق بشكل صحيح من المستندات ، وأضفت فقط 1 ، وقد عملت مع الكمان.

هناك طريقة أكثر ملائمة للقيام بذلك هي:

لتاريخ العودة ، وتريد ببساطة

date.getFullYear() + "/" + (date.getMonth() + 1) + "/" + (date.getUTCDate());

(date.getMonth مفهرس 0 بينما date.getDate مفهرسة 1 ولكنها عرضة للاختلافات في المنطقة الزمنية.)

كمان: http://jsfiddle.net/GyC3t/25/

45
Scott Mermelstein

يمكنني استخدام ما يلي لتمرير تاريخ Javascript إلى C #:

var now = new Date();
var date = (now.getTime() / 86400000) - (now.getTimezoneOffset() / 1440) + 25569;

لذلك إذا حصلت على عدد المللي ثانية من C # ، فيجب أن يكون مثل هذا:

var csharpmilliseconds;
var now = new Date();
var date = new Date((csharpmilliseconds + (now.getTimezoneOffset() / 1440) - 25569) * 86400000);
2
Nick Gotch