জেএস তারিখের সময়কে মাইএসকিউএল ডেটটাইমে রূপান্তর করুন


124

কেউ কীভাবে জেএস ডেটটাইমকে মাইএসকিউএল ডেটটাইমে রূপান্তর করতে জানে? এছাড়াও জেএস ডেটটাইমটিতে একটি নির্দিষ্ট সংখ্যক মিনিট যুক্ত করার এবং তারপরে এটি মাইএসকিউএল ডেটটাইমে পাস করার কোনও উপায় আছে?

উত্তর:


89

জেএস এটি করার জন্য পর্যাপ্ত বেসিক সরঞ্জামের মালিকানাধীন, এটি বেশ জঘন্য।

/**
 * You first need to create a formatting function to pad numbers to two digits…
 **/
function twoDigits(d) {
    if(0 <= d && d < 10) return "0" + d.toString();
    if(-10 < d && d < 0) return "-0" + (-1*d).toString();
    return d.toString();
}

/**
 * …and then create the method to output the date string as desired.
 * Some people hate using prototypes this way, but if you are going
 * to apply this to more than one Date object, having it as a prototype
 * makes sense.
 **/
Date.prototype.toMysqlFormat = function() {
    return this.getUTCFullYear() + "-" + twoDigits(1 + this.getUTCMonth()) + "-" + twoDigits(this.getUTCDate()) + " " + twoDigits(this.getUTCHours()) + ":" + twoDigits(this.getUTCMinutes()) + ":" + twoDigits(this.getUTCSeconds());
};

ভেরিয়েবলের সাথে আপনি এই জাতীয় ফাংশনটিকে কীভাবে কল করবেন?
ক্যাটফিশ

1
@ গেটফিশ আপনি একটি নির্দিষ্ট তারিখ বলতে চান? আপনি একটি Dateঅবজেক্ট ব্যবহার করুন । new Date().toMysqlFormat()বা new Date(2014,12,14).toMysqlFormat()বা যাই হোক না কেন
কোজিরো

17
জাভাস্ক্রিপ্টটি পুরানো এবং আটকানো অবস্থায় এই উত্তরটির দিনটি ছিল। আপনি যদি কোনও আধুনিক ব্রাউজারটিকে লক্ষ্য করেন তবে আমি গজাসের toISOStringপদ্ধতির প্রস্তাব দিই
কোজিরো

320
var date;
date = new Date();
date = date.getUTCFullYear() + '-' +
    ('00' + (date.getUTCMonth()+1)).slice(-2) + '-' +
    ('00' + date.getUTCDate()).slice(-2) + ' ' + 
    ('00' + date.getUTCHours()).slice(-2) + ':' + 
    ('00' + date.getUTCMinutes()).slice(-2) + ':' + 
    ('00' + date.getUTCSeconds()).slice(-2);
console.log(date);

বা আরও ছোট:

new Date().toISOString().slice(0, 19).replace('T', ' ');

আউটপুট:

2012-06-22 05:40:06

সময় অঞ্চল নিয়ন্ত্রণ সহ আরও উন্নত ব্যবহারের ক্ষেত্রে, http://momentjs.com/ ব্যবহার বিবেচনা করুন :

require('moment')().format('YYYY-MM-DD HH:mm:ss');

হালকা ওজনের বিকল্পের জন্য For , https://github.com/taylorhakes/fecha বিবেচনা করুন

require('fecha').format('YYYY-MM-DD HH:mm:ss')

তারিখের আগে আপনার অতিরিক্ত খোলার বন্ধনী রয়েছে get
অ্যাডাম লকহার্ট

28
সময়
অঞ্চলটির

3
এটি টাইমজোন সেটিংটি ছুঁড়ে ফেলেছে, কীভাবে এটি রাখব?
শাপিয়ার

2
: এটা আপ কম্বো এই সঙ্গে সময় অঞ্চল যত্ন নিতে stackoverflow.com/questions/11887934/...
chiliNUT

3
টাইমজোন অনেলাইনারের সাথে সম্পূর্ণ কর্মক্ষেত্র !! var d = new Date(); d.toISOString().split('T')[0]+' '+d.toTimeString().split(' ')[0];
পাওলো রবার্তো রোজা

78

আমি মনে করি পদ্ধতিটি ব্যবহার করে সমাধানটি কম আটকানো হতে পারে toISOString(), এর বিস্তৃত ব্রাউজারের সামঞ্জস্য রয়েছে।

সুতরাং আপনার অভিব্যক্তিটি এক-লাইন হবে:

new Date().toISOString().slice(0, 19).replace('T', ' ');

উত্পন্ন আউটপুট:

"2017-06-29 17:54:04"


2
উজ্জ্বলভাবে কাজ করে! new Date(1091040026000).toISOString().slice(0, 19).replace('T', ' ');
জন

6
গ্রেট, এখানে শুধুমাত্র একটি ইস্যু: আরও ক্লাঙ্কি পদ্ধতি ঘন্টা, দিন, মাস (এমনকি বছর) পেয়ে করা হবে না পরে JS প্রয়োগের Dateএর টাইম জোন অফসেট । যদিও আপনার মাইএসকিউএল DATETIME ফর্ম্যাটে অন্তর্নিহিত ইউটিসি সময়টি দেয়। বেশিরভাগ ক্ষেত্রে ইউটিসি সংরক্ষণ করা ভাল হতে পারে এবং উভয় ক্ষেত্রেই আপনার ডেটা টেবিলটি সম্ভবত একটি ক্ষেত্রে অবস্থানের তথ্য দেওয়া উচিত। বিকল্পভাবে, স্থানীয় সময় রূপান্তর করা বেশ সহজ: ব্যবহার ... - Date.getTimezoneOffset() * 60 * 1000(ডাবলাইট সেভিং টাইম প্রযোজ্য ক্ষেত্রে NB সামঞ্জস্য করে)।
মাইকে রডেন্ট

14

মাইএসকিউএল এর জন্য জেএস সময় মান

var datetime = new Date().toLocaleString();

অথবা

const DATE_FORMATER = require( 'dateformat' );
var datetime = DATE_FORMATER( new Date(), "yyyy-mm-dd HH:MM:ss" );

অথবা

const MOMENT= require( 'moment' );
let datetime = MOMENT().format( 'YYYY-MM-DD  HH:mm:ss.000' );

আপনি এটি পরমগুলিতে প্রেরণ করতে পারেন এটির কাজটি করে।


11

নির্বিচার তারিখের স্ট্রিংয়ের জন্য,

// Your default date object  
var starttime = new Date();
// Get the iso time (GMT 0 == UTC 0)
var isotime = new Date((new Date(starttime)).toISOString() );
// getTime() is the unix time value, in milliseconds.
// getTimezoneOffset() is UTC time and local time in minutes.
// 60000 = 60*1000 converts getTimezoneOffset() from minutes to milliseconds. 
var fixedtime = new Date(isotime.getTime()-(starttime.getTimezoneOffset()*60000));
// toISOString() is always 24 characters long: YYYY-MM-DDTHH:mm:ss.sssZ.
// .slice(0, 19) removes the last 5 chars, ".sssZ",which is (UTC offset).
// .replace('T', ' ') removes the pad between the date and time.
var formatedMysqlString = fixedtime.toISOString().slice(0, 19).replace('T', ' ');
console.log( formatedMysqlString );

বা একটি একক লাইন সমাধান,

var formatedMysqlString = (new Date ((new Date((new Date(new Date())).toISOString() )).getTime() - ((new Date()).getTimezoneOffset()*60000))).toISOString().slice(0, 19).replace('T', ' ');
console.log( formatedMysqlString );

Mysql এ টাইমস্ট্যাম্প ব্যবহার করার সময় এই সমাধানটি নোড.জেগুলির জন্যও কাজ করে।

@ গজুস কুইজিনাসের প্রথম উত্তরটি মোজিলার টোআইএসএসটিং প্রোটোটাইপকে সংশোধন করবে বলে মনে হচ্ছে


4

শ্রদ্ধেয় ডেটজেএস লাইব্রেরির একটি ফর্ম্যাটিং রুটিন রয়েছে (এটি ".TString ()" ওভাররাইড করে)। আপনি নিজে খুব সহজেই একটি করতে পারেন কারণ "তারিখ" পদ্ধতিগুলি আপনাকে প্রয়োজনীয় সমস্ত নম্বর দেয়।


4

@ গজুস উত্তর ধারণাটি ব্যবহার করে সম্পূর্ণ কর্মক্ষেত্র (টাইমজোনকে মেন্টেন করার জন্য):

var d = new Date(),
    finalDate = d.toISOString().split('T')[0]+' '+d.toTimeString().split(' ')[0];
console.log(finalDate); //2018-09-28 16:19:34 --example output

4

নতুন তারিখ ()। toISOString ()। স্লাইস (0, 10) + "" + নতুন তারিখ () .লোক্যালটাইমস্ট্রিং ('এন জিবি');

100% কাজ করছে


0

আমি সাধারণ জাভাস্ক্রিপ্ট তারিখের ফর্ম্যাট উদাহরণ দিয়েছি দয়া করে বেলো কোডটি চেক করুন

var data = new Date($.now()); // without jquery remove this $.now()
console.log(data)// Thu Jun 23 2016 15:48:24 GMT+0530 (IST)

var d = new Date,
    dformat = [d.getFullYear() ,d.getMonth()+1,
               d.getDate()
               ].join('-')+' '+
              [d.getHours(),
               d.getMinutes(),
               d.getSeconds()].join(':');

console.log(dformat) //2016-6-23 15:54:16

Momentjs ব্যবহার

var date = moment().format('YYYY-MM-DD H:mm:ss');

console.log(date) // 2016-06-23 15:59:08

উদাহরণ দয়া করে https://jsfiddle.net/sjy3vjwm/2/ দেখুন


আমি ভ্যানিলা জাভাস্ক্রিপ্টের সাহায্যে আপনার প্রথম কোডটি চেষ্টা করেছি এবং এটি আমাকে এই ফলাফল দেয়: 2018-4-20 15:11:23। আপনি নেতৃস্থানীয় "0" দিয়ে সংখ্যাগুলি প্যাড করছেন না। এছাড়াও, আমি মুহুর্তগুলি সম্পর্কে জানি না তবে আপনাকে কী "ঘন্টা এইচএইচ" লাগাতে হবে না যাতে এটি প্যাড করে? আপনারা ভোট পেয়ে নামলেন কেন? (itwasntme)
অ্যালেক্স

0

আমার কাছে ঘটে যাওয়া জেএস তারিখকে এসকিউএল ডেটটাইম ফর্ম্যাটে রূপান্তর করার সবচেয়ে সহজ সঠিক উপায়। এটি টাইমজোন অফসেটটি সঠিকভাবে পরিচালনা করে।

const toSqlDatetime = (inputDate) => {
    const date = new Date(inputDate)
    const dateWithOffest = new Date(date.getTime() - (date.getTimezoneOffset() * 60000))
    return dateWithOffest
        .toISOString()
        .slice(0, 19)
        .replace('T', ' ')
}

toSqlDatetime(new Date()) // 2019-08-07 11:58:57
toSqlDatetime(new Date('2016-6-23 1:54:16')) // 2016-06-23 01:54:16

সাবধান হন যে @ পাওলো রবার্তো উত্তরটি নতুন দিনের শুরুতে ভুল ফলাফল আনবে (আমি মন্তব্য রাখতে পারি না)। উদাহরণস্বরূপ :

var d = new Date('2016-6-23 1:54:16'),
    finalDate = d.toISOString().split('T')[0]+' '+d.toTimeString().split(' ')[0];
console.log(finalDate); // 2016-06-22 01:54:16 

আমরা 23 জুনের পরিবর্তে 22 জুন পেয়েছি!


0
var _t = new Date();

আপনি যদি ইউটিসি ফর্ম্যাটটি সহজভাবে চান

_t.toLocaleString('indian', { timeZone: 'UTC' }).replace(/(\w+)\/(\w+)\/(\w+), (\w+)/, '$3-$2-$1 $4');

অথবা

_t.toISOString().slice(0, 19).replace('T', ' ');

এবং যদি নির্দিষ্ট সময় অঞ্চল চান

_t.toLocaleString('indian', { timeZone: 'asia/kolkata' }).replace(/(\w+)\/(\w+)\/(\w+), (\w+)/, '$3-$2-$1 $4');

0

আমি দীর্ঘ সময় ব্যবহার করছি এবং এটি আমার পক্ষে খুব সহায়ক, আপনার পছন্দমতো ব্যবহার করুন

Date.prototype.date=function() {
    return this.getFullYear()+'-'+String(this.getMonth()+1).padStart(2, '0')+'-'+String(this.getDate()).padStart(2, '0')
}

Date.prototype.time=function() {
    return String(this.getHours()).padStart(2, '0')+':'+String(this.getMinutes()).padStart(2, '0')+':'+String(this.getSeconds()).padStart(2, '0')
}

Date.prototype.dateTime=function() {
    return this.getFullYear()+'-'+String(this.getMonth()+1).padStart(2, '0')+'-'+String(this.getDate()).padStart(2, '0')+' '+String(this.getHours()).padStart(2, '0')+':'+String(this.getMinutes()).padStart(2, '0')+':'+String(this.getSeconds()).padStart(2, '0')
}

Date.prototype.addTime=function(time) {
    var time=time.split(":")
    var rd=new Date(this.setHours(this.getHours()+parseInt(time[0])))
    rd=new Date(rd.setMinutes(rd.getMinutes()+parseInt(time[1])))
    return new Date(rd.setSeconds(rd.getSeconds()+parseInt(time[2])))
}

Date.prototype.addDate=function(time) {
    var time=time.split("-")
    var rd=new Date(this.setFullYear(this.getFullYear()+parseInt(time[0])))
    rd=new Date(rd.setMonth(rd.getMonth()+parseInt(time[1])))
    return new Date(rd.setDate(rd.getDate()+parseInt(time[2])))
}

Date.prototype.subDate=function(time) {
    var time=time.split("-")
    var rd=new Date(this.setFullYear(this.getFullYear()-parseInt(time[0])))
    rd=new Date(rd.setMonth(rd.getMonth()-parseInt(time[1])))
    return new Date(rd.setDate(rd.getDate()-parseInt(time[2])))
}

এবং তারপরে ঠিক:

new Date().date()

যা 'মাইএসকিউএল ফর্ম্যাটে' বর্তমান তারিখটি প্রদান করে

যোগ সময় জন্য

new Date().addTime('0:30:0')

যা ৩০ মিনিট যোগ করবে .... ইত্যাদি

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.