هذا سؤال طرحه صديق في المجموعة. في ذلك الوقت ، قلت إنه يمكنني فقط الحكم على ما إذا كان اليوم مجاورًا. في وقت لاحق ، فكرت في الأمر بعناية ووجدت أنه كان خاطئًا تمامًا.
متطلبات المشكلة
بالنظر إلى 5 تواريخ من نفس التنسيق ، كيف يمكنك تحديد ما إذا كان 5 أيام متتالية؟
كان رد فعلي الأول على getDay () وفرزه ، ثم قارنه قبل وبعد. .
ولكن إذا فكرت في الأمر بعناية ، فهذا خطأ تمامًا. على سبيل المثال ، سيكون هذا أيضًا سوءًا.
وهي ليست مجرد مشكلة ، ولكنها أيضًا عبور الشهر وعواء رأس السنة الجديدة وشهر LEAP وغيرها من القضايا.
ثم هناك الكود التالي.
دع الطابع الزمني ينعم كل شيء
لكي لا داعي للقلق بشأن هذه القضايا ، فكرت في الطوابع الزمنية ، ويمكن لهذا الرجل تجاهل المشكلات المذكورة أعلاه تمامًا. مجرد معالجة الطابع الزمني وقارنها في النهاية.
ثم أعطيت الرمز التالي:
دعوا أيام = ['2016-02-28' ، '2016-02-29' ، // leap month'2016-03-01 '، // cross month'2016-03-02' ، '2016-03-03' ،] dt.setDate (dt.getDate () + 4 - i) // تمت معالجتها على أنها عودة التاريخ نفسه + dt}) // قارن ما إذا كانت الطوابع الزمنية هي نفس console.log (_days [0] == _days [1] && _days [0] == _days [2] _ أيام [4])
حسنًا ، تم حل جميع المشكلات ، ولا يهم إذا عبرت العام الجديد ، أو تعبر الشهر ، أو شهر القفز.
تغليف الوظيفة العامة
لا يزال الرمز أعلاه معيبًا بعض الشيء ، لأنه لا تتم معالجة الوقت والدقيقة والثانية ، وإذا كانت هناك أوقات ، دقيقة وثانية ، يجب أن تمحوها أولاً.
دعوا أيام = ['2016-02-28 12:00:00' ، '2016-02-29 12:00:01' ، // Leap Month'2016-03-01 12:00:02 '، // cross-month'2016-03-02 12:00:03' ، '2016-03 12:00:00' ، '2016-03-04 12:00:04 '،] console.log (conterays (days)) وظيفة مستمرة (arr_days) {// الفرز أولاً ، ثم قم بإدراج Timestamp Let Days = arr_days.sort (). map ((d ، i) => {let dt = new date (d) dt.setdate (dt.getDate () + 4 - i) milliseconds ، dt.setMinutes (0) dt.setseconds (0) dt.setMillisEconds (0) return +dt}) دع ret = true days.foreach (d => {if (days [0]! == d) {ret = false}}) returتم تغيير هذه الوظيفة للتو في مكانين ، محو الوقت ، الدقيقة ، الثانية ، مقارنة المللي ثانية والحلقة ، والآخرون متماثلون.
ملخص
لا يزال وقت معالجة JS بسيطًا جدًا. على سبيل المثال ، من السهل جدًا تنفيذ المكون الإضافي للتاريخ بمساعدة التاريخ ، ولكن تحتاج إلى فهم واجهة برمجة تطبيقات التاريخ.
بالطبع ، أن نقول إنه بسيط ، أو أن PHP هو أبسط ، وهذا ببساطة مذهل.
المثال البسيط أعلاه للحكم على ما إذا كانت مجموعة التواريخ مستمرة هو كل المحتوى الذي أشاركه معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.