কোনও ইউটিসি তারিখকে ode YYYY-MM-DD এইচ: মিমি: এসএস using স্ট্রিংটি নোডজেএস ব্যবহার করে কীভাবে বিন্যাস করবেন?


242

নোডজেএস ব্যবহার করে, আমি Dateনিম্নলিখিত স্ট্রিং বিন্যাসে একটি ফর্ম্যাট করতে চাই :

var ts_hms = new Date(UTC);
ts_hms.format("%Y-%m-%d %H:%M:%S");

আমি কেমন করে ঐটি করি?


4
কোনও লাইব্রেরি ছাড়াই এটি করা এক ধরনের বিরক্তিকর বিষয়। আমি ডেটজেস
পিটার ওলসন



টেম্পাস দুর্দান্ত কাজ করেছে। বিজ্ঞাপন ইস্যু মুহূর্ত হবে।
ট্যাম্পা

1
ডেটজ বা টেম্পাস উভয়ই নোড গ্রন্থাগার নয় (যদিও তারা নোডের সাথে ব্যবহার করা যেতে পারে আপনি এনপিএম গ্রন্থাগার ইনস্টলার ব্যবহার করতে পারবেন না)। যেহেতু কেউ এগুলি প্রকৃত উত্তর হিসাবে রাখেনি, আমি নিজেই করেছি।
জুলিয়ান নাইট

উত্তর:


531

আপনি যদি নোড.জেএস ব্যবহার করছেন তবে আপনার অবশ্যই ইকামাস্ক্রিপ্ট 5 রয়েছে, এবং তাই তারিখটির একটি toISOStringপদ্ধতি রয়েছে। আপনি আইএসও 8601 এর সামান্য পরিবর্তন চাইছেন:

new Date().toISOString()
> '2012-11-04T14:51:06.157Z'

সুতরাং কিছু জিনিস কেটে ফেলুন, এবং আপনি সেট করেছেন:

new Date().toISOString().
  replace(/T/, ' ').      // replace T with a space
  replace(/\..+/, '')     // delete the dot and everything after
> '2012-11-04 14:55:45'

বা, এক লাইনে: new Date().toISOString().replace(/T/, ' ').replace(/\..+/, '')

ISO8601 অবশ্যই ইউটিসি (প্রথম ফলাফলের পিছনে জেড দ্বারা নির্দেশিত), তাই আপনি ডিফল্টরূপে ইউটিসি পান (সর্বদা একটি ভাল জিনিস)।


4
চতুর এবং সহজ সমাধান যা গ্রন্থাগারগুলির ব্যবহার এড়ানো যায় - দুর্দান্ত!
উইংম্যান

11
আপনি যদি ত্রুটি পান তবে Object has no method 'toISOString'আপনি মিস করেছেনnew
অ্যালেনহকিম

29
একটি বিষয় লক্ষণীয় হ'ল নিয়মিত এক্সপ্রেশনগুলি এইভাবে ব্যবহার করা ধীর এবং আপনার এখানে এগুলি দরকারও নেই, এটি: new Date().toISOString().replace('T', ' ').substr(0, 19)ঠিক কাজ করে।
কিল্লাহ

2
নোট করুন যে সময় অঞ্চলটি অপসারণের মাধ্যমে, এটি এখন প্রতিটি টাইম জোনে সময়ের সাথে আলাদা অফসেট সহ বিভিন্ন মুহুর্তের প্রতিনিধিত্ব করে।
রবজি

1
@ রবজি আপনি বলতে পারেন যে কোনও তারিখের সময় উপস্থাপনা সম্পর্কে যা একটি স্পষ্ট টাইমজোন না করে।
ফিল

105

আপডেট ২০১-0-০৩-২৯: তারিখ-এফএনএস, মুহুর্ত এবং তারিখ সম্পর্কিত কিছু নোটগুলি
আপডেট করা হয়েছে ২০১ 2016-০9-২০১।: যুক্ত করা সুগারজেএস যা কিছু দুর্দান্ত তারিখ / সময় ফাংশন বলে মনে হচ্ছে।


ঠিক আছে, যেহেতু কেউই প্রকৃত উত্তর সরবরাহ করেনি, তাই এটি আমার।

একটি স্ট্যান্ডার্ড উপায়ে তারিখ এবং সময় পরিচালনা করার জন্য একটি গ্রন্থাগার অবশ্যই সেরা বাজি। তারিখ / সময় গণনাগুলিতে প্রচুর প্রান্তের কেস রয়েছে তাই বিকাশটিকে কোনও লাইব্রেরিতে হ্যান্ড-অফ করতে সক্ষম হওয়া কার্যকর।

এখানে মূল নোডের সামঞ্জস্যপূর্ণ টাইম ফর্ম্যাটিং লাইব্রেরির একটি তালিকা রয়েছে:

  • মোমেন্ট.জেএস [ মোস্তফার জন্য ধন্যবাদ ] "পার্সিং, হেরফের, এবং ফর্ম্যাট করার তারিখগুলির জন্য একটি হালকা ওজনের (4.3 কে) জাভাস্ক্রিপ্টের তারিখের গ্রন্থাগার" - আন্তর্জাতিকীকরণ, গণনা এবং আপেক্ষিক তারিখের ফর্ম্যাটগুলি অন্তর্ভুক্ত করে - আপডেট 2017-03-29 : হালকা ওজন খুব বেশি নয় আরও কোনও তবে এখনও সর্বাধিক বিস্তৃত সমাধান, বিশেষত আপনার যদি টাইমজোন সমর্থন প্রয়োজন।
  • তারিখ-এফএনএস [ ফ্র্যাক্টালফকে ধন্যবাদ 2017-03-29 যোগ করেছেন ] ছোট, দ্রুত, মানক জেএস তারিখের অবজেক্টগুলির সাথে কাজ করে। মুহুর্তের দুর্দান্ত বিকল্প যদি আপনার টাইমজোন সমর্থন না লাগে।
  • সুগারজেএস - একটি সাধারণ সহায়ক লাইব্রেরি জাভাস্ক্রিপ্টগুলিতে অন্তর্নির্মিত বস্তুর ধরণের ক্ষেত্রে প্রয়োজনীয় বৈশিষ্ট্য যুক্ত করে। কিছু দুর্দান্ত দেখার তারিখ / সময় ক্ষমতা অন্তর্ভুক্ত।
  • স্ট্রফটাইম - এটি যা বলে ঠিক তা সহজ এবং সাধারণ
  • ডেটুটিল - মোমেন্টজএস এর আগে এটিই আমি ব্যবহার করতাম
  • নোড-formatdate
  • টাইমট্র্যাভেলার - "সময় ট্র্যাভিলার তারিখগুলি মোকাবেলা করার জন্য ইউটিলিটি পদ্ধতির একটি সেট সরবরাহ করে adding
  • টেম্পাস [ড্যান ডি-কে ধন্যবাদ] - আপডেট: এটি নোডের সাথেও ব্যবহার করা যেতে পারে এবং এনপিএম সহ মোতায়েন করা যেতে পারে, ডকগুলি দেখুন

নোড নন গ্রন্থাগারগুলিও রয়েছে:

  • ডেটজেস [পিটার ওলসনকে ধন্যবাদ] - এনপিএম বা গিটহাবের মধ্যে প্যাকেজ করা নোডের সাথে ব্যবহার করা এতটা সহজ নয় - 2007 সালের পরে আপডেট হয়নি বলে সত্যই সুপারিশ করা হয়নি!

2
এটি অত্যন্ত প্রাসঙ্গিক তারিখ-fns.org ( github.com/date-fns/date-fns )
ফ্র্যাক্টালফ

মুহুর্তের পিছনে লোক (গুলি) ফেব্রুয়ারী 2018 অবধি লাক্সন
alxndr

ধন্যবাদ @ অ্যালেক্সেন্ডার, দেখতে দরকারী রিবুটের মতো।
জুলিয়ান নাইট 14

মুহুর্ত + টোআইএসএসট্রিং () রানকিট-এ: রানকিট
শেন

70

রূপান্তরকরণের জন্য একটি গ্রন্থাগার রয়েছে:

npm install dateformat

তারপরে আপনার প্রয়োজনীয়তা লিখুন:

var dateFormat = require('dateformat');

তারপরে মানটি বাঁধুন:

var day=dateFormat(new Date(), "yyyy-mm-dd h:MM:ss");

দেখতে dateformat


14

45

আমার সাধারণভাবে গ্রন্থাগারের বিরুদ্ধে কিছু নেই। এক্ষেত্রে সাধারণ উদ্দেশ্য গ্রন্থাগারটি অতিমাত্রায় মনে হয়, যদি না অ্যাপ্লিকেশন প্রক্রিয়ার অন্যান্য অংশগুলি খুব বেশি তারিখের হয়।

এর মতো ছোট্ট ইউটিলিটি ফাংশনগুলি রচনাও উভয় প্রারম্ভিক এবং দক্ষ প্রোগ্রামারদের জন্য একটি দরকারী অনুশীলন এবং আমাদের মধ্যে নবীনীদের জন্য একটি শেখার অভিজ্ঞতা হতে পারে।

function dateFormat (date, fstr, utc) {
  utc = utc ? 'getUTC' : 'get';
  return fstr.replace (/%[YmdHMS]/g, function (m) {
    switch (m) {
    case '%Y': return date[utc + 'FullYear'] (); // no leading zeros required
    case '%m': m = 1 + date[utc + 'Month'] (); break;
    case '%d': m = date[utc + 'Date'] (); break;
    case '%H': m = date[utc + 'Hours'] (); break;
    case '%M': m = date[utc + 'Minutes'] (); break;
    case '%S': m = date[utc + 'Seconds'] (); break;
    default: return m.slice (1); // unknown code, remove %
    }
    // add leading zero if required
    return ('0' + m).slice (-2);
  });
}

/* dateFormat (new Date (), "%Y-%m-%d %H:%M:%S", true) returns 
   "2012-05-18 05:37:21"  */

25
যদিও এটি সত্যিকারের শেখার জন্য কার্যকর হতে পারে, তবে আমার একমত হতে হবে যে এটি একটি ছোট, ভালভাবে নির্মিত গ্রন্থাগার ব্যবহারের চেয়ে ভাল ফলাফল। একটি লাইব্রেরি রক্ষণাবেক্ষণ করা হবে এবং ডিজাইনে প্রান্ত-কেসগুলি কভার করার বেশি সম্ভাবনা রয়েছে যা প্রথম দর্শনে আপনার কাছে দৃশ্যমান নাও হতে পারে তবে সহজেই কোনও সময় কামড় দিতে পারে - তারিখ / সময় গণনাগুলি তাদের সহজাত জটিলতার কারণে বিশেষত এই সমস্যাগুলির ঝুঁকিতে থাকে।
জুলিয়ান নাইট

8
এটি স্ট্রিং.রেপ্লেস () পদ্ধতির খুব ভাল ব্যবহার, সৃজনশীলতার জন্য +1
জ্যামি জাগ

5
না। এক্ষেত্রে অবশ্যই কোনও গ্রন্থাগার ব্যবহার করুন। ফর্ম্যাট পরিবর্তন হতে পারে। এমনকি যদি এটি পরিবর্তন না হয় তবে এটি কোডটিতে জটিলতা যুক্ত করছে। আপনার কোড বজায় রাখার অন্যান্য লোকদের এই ফাংশনটি বোঝার চেষ্টা করে এবং এটি সঠিক কিনা তা নিশ্চিত করার জন্য সময় ব্যয় করতে হবে। অনুশীলনগুলি স্কুলের জন্য; প্রশ্নটি ছিল বাস্তব জীবনের ব্যবহার সম্পর্কে। অবশ্যই, যদি না এটি আপনার প্রথম বা দ্বিতীয় "আসল" প্রকল্প; তারপরে এমন কিছু করা ভাল হতে পারে, যাতে ভবিষ্যতে আপনার এটি কেন করা উচিত নয় তা আপনি শিখতে পারেন।
ওসো

3
আমি প্রমাণিত / যুদ্ধ-কঠোর কোড হিসাবে লাইব্রেরি ব্যবহার করার সাধারণ অনুভূতির প্রশংসা করি তবে তারা স্থাপনার জটিলতাও যুক্ত করতে পারে। এই কোডটি অন্তর্নিহিত তারিখ অবজেক্টের সাথে ক্যালেন্ডার সম্পর্কিত সূক্ষ্মতাগুলির সকলকে প্রতিনিধিত্ব করে এবং যথাযথ স্থানে getUTCDate () পদ্ধতি কল করে। অতিরিক্তভাবে, যদি কেউ এই কোডটিতে কোনও ত্রুটি খুঁজে পান তারা স্ট্যাকওভারফ্লো ডটকম এ এখানে এটি রিপোর্ট করতে পারেন, মূলত অন্য কোনও লাইব্রেরির অনেকগুলি চোখের / অগভীর-বাগের দিকটি মিলিয়ে। +1
স্টিমার 25

11

কোনও পাঠাগার ব্যবহার না করে আপনার কাঙ্ক্ষিত বিন্যাসে টাইমস্ট্যাম্প পাওয়ার জন্য সহজেই পঠনযোগ্য এবং কাস্টমাইজ করার উপায়:

function timestamp(){
  function pad(n) {return n<10 ? "0"+n : n}
  d=new Date()
  dash="-"
  colon=":"
  return d.getFullYear()+dash+
  pad(d.getMonth()+1)+dash+
  pad(d.getDate())+" "+
  pad(d.getHours())+colon+
  pad(d.getMinutes())+colon+
  pad(d.getSeconds())
}

(আপনার যদি ইউটিসি ফর্ম্যাটে সময় প্রয়োজন হয় তবে কেবলমাত্র ফাংশন কলগুলি পরিবর্তন করুন For উদাহরণস্বরূপ "getMonth" "getUTCMonth" হয়ে যায়)


9

জাভাস্ক্রিপ্ট লাইব্রেরি সুগার.জেএস ( http://sugarjs.com/ ) এর তারিখগুলির বিন্যাস করার ফাংশন রয়েছে

উদাহরণ:

Date.create().format('{dd}/{MM}/{yyyy} {hh}:{mm}:{ss}.{fff}')

3
সত্যিই দুর্দান্ত এক লাইব্রেরির মতো দেখাচ্ছে। তাদের ফর্ম্যাটিংটি বেশ চটজলদি এবং তাদের ডক্স জাভাস্ক্রিপ্টে হতাশ হয়ে পড়ে থাকা আরও একশো বিষয়কে মার্জিত সমাধান দেখায়। এই চেষ্টা করে দেখতে যাচ্ছি।
ইমাজেন্টহাট

6

তারিখ অবজেক্টে প্রদত্ত পদ্ধতিটি নিম্নরূপ ব্যবহার করুন:

var ts_hms = new Date();

console.log(
    ts_hms.getFullYear() + '-' + 
    ("0" + (ts_hms.getMonth() + 1)).slice(-2) + '-' + 
    ("0" + (ts_hms.getDate())).slice(-2) + ' ' +
    ("0" + ts_hms.getHours()).slice(-2) + ':' +
    ("0" + ts_hms.getMinutes()).slice(-2) + ':' +
    ("0" + ts_hms.getSeconds()).slice(-2));

এটি দেখতে সত্যিই নোংরা, তবে এটি জাভাস্ক্রিপ্ট মূল পদ্ধতিগুলির সাথে সূক্ষ্মভাবে কাজ করা উচিত


2
আমি সম্মত হই যে জানুয়ারী 0 হিসাবে ফিরে আসার পরে আপনাকে getMonth () এ যুক্ত করতে হবে তবে আমি মনে করি না আপনি getDate () এ 1 যোগ করতে চান।
স্টিভ অনোরটো

5

আমি ব্যবহার করছি dateformat Nodejs এবং angularjs, তাই ভাল এ

ইনস্টল

$ npm install dateformat
$ dateformat --help

ডেমো

var dateFormat = require('dateformat');
var now = new Date();

// Basic usage
dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT");
// Saturday, June 9th, 2007, 5:46:21 PM

// You can use one of several named masks
dateFormat(now, "isoDateTime");
// 2007-06-09T17:46:21

// ...Or add your own
dateFormat.masks.hammerTime = 'HH:MM! "Can\'t touch this!"';
dateFormat(now, "hammerTime");
// 17:46! Can't touch this!

// You can also provide the date as a string
dateFormat("Jun 9 2007", "fullDate");
// Saturday, June 9, 2007
...

3
new Date(2015,1,3,15,30).toLocaleString()

//=> 2015-02-03 15:30:00

স্ট্যাকওভারফ্লোতে আপনাকে স্বাগতম। আপনার উত্তর সম্পাদনা করুন, বা আপনি নিচে ভোট হতে পারে। যেমনটি এখন, এটি কোনও প্রসঙ্গ ছাড়াই কেবল একটি পরামর্শ। একটি ভাল উত্তর লিখতে জন্য দয়া করে এখানে দেখুন ।
jacefarm

এটি ডি-লোকালে (তাই টোকা স্ট্রিং) এর সাথে ঘটে:3.2.2015, 15:30:00
2'19

2

বিকল্প # 6233 ....

স্থানীয় সময়ে ইউটিসি অফসেট যুক্ত করুন এবং তারপরে অবজেক্টের toLocaleDateString()পদ্ধতিতে এটি পছন্দসই বিন্যাসে রূপান্তর করুন Date:

// Using the current date/time
let now_local = new Date();
let now_utc = new Date();

// Adding the UTC offset to create the UTC date/time
now_utc.setMinutes(now_utc.getMinutes() + now_utc.getTimezoneOffset())

// Specify the format you want
let date_format = {};
date_format.year = 'numeric';
date_format.month = 'numeric';
date_format.day = '2-digit';
date_format.hour = 'numeric';
date_format.minute = 'numeric';
date_format.second = 'numeric';

// Printing the date/time in UTC then local format
console.log('Date in UTC: ', now_utc.toLocaleDateString('us-EN', date_format));
console.log('Date in LOC: ', now_local.toLocaleDateString('us-EN', date_format));

আমি স্থানীয় সময়ে ডিফল্ট একটি তারিখ অবজেক্ট তৈরি করছি। আমি এটিতে ইউটিসি অফসেট যুক্ত করছি। আমি একটি তারিখ-বিন্যাস অবজেক্ট তৈরি করছি। আমি পছন্দসই বিন্যাসে ইউটিসি তারিখ / সময় প্রদর্শন করছি:

এখানে চিত্র বর্ণনা লিখুন


1

এক্স-ক্লাস লাইব্রেরিরx-date উপ-মডিউলগুলির মধ্যে একটি যা মডিউল ব্যবহার করুন ;

require('x-date') ; 
  //---
 new Date().format('yyyy-mm-dd HH:MM:ss')
  //'2016-07-17 18:12:37'
 new Date().format('ddd , yyyy-mm-dd HH:MM:ss')
  // 'Sun , 2016-07-17 18:12:51'
 new Date().format('dddd , yyyy-mm-dd HH:MM:ss')
 //'Sunday , 2016-07-17 18:12:58'
 new Date().format('dddd ddSS of mmm , yy')
  // 'Sunday 17thth +0300f Jul , 16'
 new Date().format('dddd ddS  mmm , yy')
 //'Sunday 17th  Jul , 16'

1
new Date().toString("yyyyMMddHHmmss").
      replace(/T/, ' ').  
      replace(/\..+/, '') 

.toString () সহ, এটি ফর্ম্যাটে পরিণত হয়

প্রতিস্থাপন (/ টি /, '')। // টি কে '' 2017-01-15T এ প্রতিস্থাপন করুন ...

(/..+/, '') // এর জন্য প্রতিস্থাপন করুন ... 13: 50: 16.1271

উদাহরণস্বরূপ, বর্ণ দেখুন dateএবং hour:

var date="2017-01-15T13:50:16.1271".toString("yyyyMMddHHmmss").
                    replace(/T/, ' ').      
                    replace(/\..+/, '');
    
                    var auxCopia=date.split(" ");
                    date=auxCopia[0];
                    var hour=auxCopia[1];

console.log(date);
console.log(hour);


1
আপনি কি আপনার উত্তরের প্রেক্ষাপট হিসাবে কিছু ব্যাখ্যা সরবরাহ করতে পারেন?
টি-হেরন

স্ট্যাকওভারফ্লোতে আপনাকে স্বাগতম। আপনার উত্তর সম্পাদনা করুন, বা আপনি নিচে ভোট হতে পারে। যেমনটি এখন, এটি কোনও প্রসঙ্গ ছাড়াই কেবল একটি পরামর্শ। একটি ভাল উত্তর লিখতে জন্য দয়া করে এখানে দেখুন ।
jacefarm

@ ব্যবহারকারী 7396942 - আপনার উত্তরে প্রসঙ্গ / ব্যাখ্যা যুক্ত করার জন্য এখন আপ-ভোট দিয়েছেন। দাবি অস্বীকার: আমি আগে যিনি নিচে ভোট দিয়েছিলাম তা ছিলাম না, কারণ এখন এটি আরও ভাল দেখাচ্ছে।
টি-হেরন

3
কেন .toString("yyyyMMddHHmmss")?
আরজান

1

তারিখের জন্য সর্বাধিক সহজ উপায় বিন্যাস হ'ল মুহুর্তের lib ব্যবহার। https://momentjs.com/

const moment = require('moment')
const current = moment().utc().format('Y-M-D H:M:S')

ধন্যবাদ, @ জাজেব_007 এটি আমার পক্ষে কাজ করছে এমনকি আমারও প্রয়োজন নেই toISOString()এবংtoUTCString()
বাবলু আহমেদ

0

আমার লোকাল এবং ভাষার সমর্থনগুলির ঘণ্টা এবং শিস ছাড়াই একটি সাধারণ বিন্যাসকরণ গ্রন্থাগার দরকার needed তাই আমি সংশোধন করেছি

http://www.mattkruse.com/javascript/date/date.js

এবং এটি ব্যবহার। Https://github.com/adgang/atom-time/blob/master/lib/dateformat.js দেখুন

ডকুমেন্টেশন বেশ পরিষ্কার।


0
appHelper.validateDates = function (start, end) {
    var returnval = false;

    var fd = new Date(start);
    var fdms = fd.getTime();
    var ed = new Date(end);
    var edms = ed.getTime();
    var cd = new Date();
    var cdms = cd.getTime();

    if (fdms >= edms) {
        returnval = false;
        console.log("step 1");
    }
    else if (cdms >= edms) {
        returnval = false;
        console.log("step 2");
    }
    else {
        returnval = true;
        console.log("step 3");
    }
    console.log("vall", returnval)
    return returnval;
}

-1

আমি মনে করি এটি আসলে আপনার প্রশ্নের উত্তর দেয়।

জাভাস্ক্রিপ্টে তারিখ / সময় নিয়ে কাজ করা এত বিরক্তিকর। কয়েক ধূসর চুল পরে আমি বুঝতে পারলাম যে আসলে খুব সহজ ছিল।

var date = new Date();
var year = date.getUTCFullYear();
var month = date.getUTCMonth();
var day = date.getUTCDate();
var hours = date.getUTCHours();
var min = date.getUTCMinutes();
var sec = date.getUTCSeconds();

var ampm = hours >= 12 ? 'pm' : 'am';
hours = ((hours + 11) % 12 + 1);//for 12 hour format

var str = month + "/" + day + "/" + year + " " + hours + ":" + min + ":" + sec + " " + ampm;
var now_utc =  Date.UTC(str);

এখানে একটি ঝাঁকুনি


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