تعطيل ADBLOCK

يمنع ADBlock بعض المحتوى على الموقع

ADBlock errore
العثور على نتائج: 

كيف يمكنني تحويل السلسلة إلى التاريخ والوقت مع مواصفات تنسيق في جافا سكريبت؟

StackOverflow https://stackoverflow.com/questions/476105

سؤال

وكيف يمكنني تحويل سلسلة إلى كائن التاريخ والوقت في جافا سكريبت عن طريق تحديد سلسلة التنسيق؟

وأنا أبحث عن شيء مثل:

var dateTime = convertToDateTime("23.11.2009 12:34:56", "dd.MM.yyyy HH:mm:ss");

المحلول

وأعتقد أن هذا يمكن أن تساعدك: http://www.mattkruse.com/javascript/date/

وهناك وظيفة getDateFromFormat() التي يمكنك قرص قليلا إلى حل مشكلتك.

تحديث: هناك نسخة محدثة من العينات متوفرة في javascripttoolbox.com

إذا أردت ، اترك لنا رأيك

هل كانت المقالة مفيدة وهل تمت ترجمتها بشكل صحيح؟

نصائح أخرى

استخدم new Date(dateString) إذا سلسلة متوافق مع Date.parse() . إذا شكل غير متوافق (وأعتقد أنه هو)، لديك لتحليل سلسلة نفسك (يجب أن تكون سهلة مع التعابير العادية) وإنشاء <لأ href = "https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference / Global_Objects / التاريخ "يختلط =" noreferrer "> التاريخ وجوه جديدة مع القيم صريحة للالسنة والشهر واليوم والساعة والدقيقة والثانية.

وChristoph التنويهات باستخدام التعابير المنطقية لمعالجة هذه المشكلة. وإليك ما أنا باستخدام:

var dateString = "2010-08-09 01:02:03";
var reggie = /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/;
var dateArray = reggie.exec(dateString); 
var dateObject = new Date(
    (+dateArray[1]),
    (+dateArray[2])-1, // Careful, month starts at 0!
    (+dateArray[3]),
    (+dateArray[4]),
    (+dateArray[5]),
    (+dateArray[6])
);

وانها بأي حال من الأحوال ذكي، مجرد تكوين التعبير المعتاد وnew Date(blah) لتناسب احتياجاتك.

وتحرير: ربما أكثر قليلا مفهومة في ES6 باستخدام الإتلاف:

let dateString = "2010-08-09 01:02:03"
  , reggie = /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/
  , [, year, month, day, hours, minutes, seconds] = reggie.exec(dateString)
  , dateObject = new Date(year, month-1, day, hours, minutes, seconds);

ولكن وبكل صدق هذه الأيام I تصل لشيء من هذا القبيل لحظة

توجد

وموعد تطورا الوقت / الروتينية التنسيق في جافا سكريبت.

وسيكون لديك لاستخدام مكتبة خارجية لإخراج التاريخ تنسيق، "جافا سكريبت تنسيق التاريخ" من صارخ Badassery تبدو واعدة جدا.

لتحويل المدخلات، وقد قدمت عدة اقتراحات بالفعل. :)

Moment.js . ومن مكتبة حديثة وقوية تعوض عن وظائف التسجيل محزن جافا سكريبت (أو عدمه).

var temp1 = "";
var temp2 = "";

var str1 = fd; 
var str2 = td;

var dt1  = str1.substring(0,2);
var dt2  = str2.substring(0,2);

var mon1 = str1.substring(3,5);
var mon2 = str2.substring(3,5);

var yr1  = str1.substring(6,10);  
var yr2  = str2.substring(6,10); 

temp1 = mon1 + "/" + dt1 + "/" + yr1;
temp2 = mon2 + "/" + dt2 + "/" + yr2;

var cfd = Date.parse(temp1);
var ctd = Date.parse(temp2);

var date1 = new Date(cfd); 
var date2 = new Date(ctd);

if(date1 > date2) { 
    alert("FROM DATE SHOULD BE MORE THAN TO DATE");
}

مكتبة خارجية هو مبالغة لتحليل واحد أو اثنين من التمور، لذلك جعل وظيفة بلدي باستخدام و أولي ل<ل أ href = "https://stackoverflow.com/a/476117/1801588"> كريستوف لحلول . هنا في وسط أوروبا نحن نادرا ما تستخدم aything لكن شكل وOP، وهذا ما ينبغي أن يكون كافيا لتطبيقات بسيطة تستخدم هنا.

function ParseDate(dateString) {
    //dd.mm.yyyy, or dd.mm.yy
    var dateArr = dateString.split(".");
    if (dateArr.length == 1) {
        return null;    //wrong format
    }
    //parse time after the year - separated by space
    var spacePos = dateArr[2].indexOf(" ");
    if(spacePos > 1) {
        var timeString = dateArr[2].substr(spacePos + 1);
        var timeArr = timeString.split(":");
        dateArr[2] = dateArr[2].substr(0, spacePos);
        if (timeArr.length == 2) {
            //minutes only
            return new Date(parseInt(dateArr[2]), parseInt(dateArr[1]-1), parseInt(dateArr[0]), parseInt(timeArr[0]), parseInt(timeArr[1]));
        } else {
            //including seconds
            return new Date(parseInt(dateArr[2]), parseInt(dateArr[1]-1), parseInt(dateArr[0]), parseInt(timeArr[0]), parseInt(timeArr[1]), parseInt(timeArr[2]))
        }
    } else {
        //gotcha at months - January is at 0, not 1 as one would expect
        return new Date(parseInt(dateArr[2]), parseInt(dateArr[1] - 1), parseInt(dateArr[0]));
    }
}

وDate.parse() ذكي إلى حد ما ولكن لا أستطيع أن نضمن أن شكل تحليل بشكل صحيح.

إذا لم يحدث ذلك، كنت قد لتجد شيئا لسد اثنين. المثال هو بسيط جدا (وهي أرقام بحتة) حتى لمسة من REGEX (أو حتى string.split() - قد يكون أسرع). إرفاقها مع بعض parseInt() سوف تسمح لك لجعل بسرعة تاريخ

time = "2017-01-18T17:02:09.000+05:30"

t = new Date(time)

hr = ("0" + t.getHours()).slice(-2);
min = ("0" + t.getMinutes()).slice(-2);
sec = ("0" + t.getSeconds()).slice(-2);

t.getFullYear()+"-"+t.getMonth()+1+"-"+t.getDate()+" "+hr+":"+min+":"+sec

وفقط لإعطاء بلدي 5 سنتات.

وتنسيق التاريخ بلادي dd.mm.yyyy (تنسيق UK) وأيا من الأمثلة المذكورة أعلاه كانوا يعملون بالنسبة لي. وجميع موزعي تدرس ملم واليوم ودد في الشهر.

ولقد وجدت هذه المكتبة: HTTP : //joey.mazzarelli.com/2008/11/25/easy-date-parsing-with-javascript/ وعملت، لأنك يمكن أن نقول ترتيب الحقول مثل هذا:

>>console.log(new Date(Date.fromString('09.05.2012', {order: 'DMY'})));
Wed May 09 2012 00:00:00 GMT+0300 (EEST)

وآمل أن يساعد شخص ما.

Moment.js سوف تتعامل مع هذا:

var momentDate = moment('23.11.2009 12:34:56', 'DD.MM.YYYY HH:mm:ss');
var date = momentDate.;

ليفي تماما على Date.parse تحويل السلسلة إلى تهيئة DD-MM-YYYY على النحو المحدد في RFC822، إذا كنت تستخدم YYYY-MM-DD تحليل قد تفعل الأخطاء.

//Here pdate is the string date time
var date1=GetDate(pdate);
    function GetDate(a){
        var dateString = a.substr(6);
        var currentTime = new Date(parseInt(dateString ));
        var month =("0"+ (currentTime.getMonth() + 1)).slice(-2);
        var day =("0"+ currentTime.getDate()).slice(-2);
        var year = currentTime.getFullYear();
        var date = day + "/" + month + "/" + year;
        return date;
    }

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow