315

NodeJSを使用して、aDateを次の文字列形式にフォーマットしたいと思います。

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

それ、どうやったら出来るの?

4

21 に答える 21

668

If you're using Node.js, you're sure to have EcmaScript 5, and so Date has a toISOString method. You're asking for a slight modification of ISO8601:

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

So just cut a few things out, and you're set:

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

Or, in one line: new Date().toISOString().replace(/T/, ' ').replace(/\..+/, '')

ISO8601 is necessarily UTC (also indicated by the trailing Z on the first result), so you get UTC by default (always a good thing).

于 2012-11-04T14:57:21.977 に答える
122

更新2021-10-06:Day.jsを追加し、@ashleedawgによる誤った編集を削除します
更新2021-04-07:@Tampaによって追加されたLuxon。
UPDATE 2021-02-28:Moment.jsはもはや積極的に開発されていないことに注意してください。他にもたくさん埋め込まれているので、急いで消えることはありません。Webサイトには、代替案に関するいくつかの推奨事項とその理由の説明があります。
UPDATE 2017-03-29:date-fnsを追加し、MomentとDatejsに関するメモを
追加しました。UPDATE2016-09-14:いくつかの優れた日付/時刻関数を備えているように見えるSugarJSを追加しました。


OK、実際に答えを出した人は誰もいないので、ここに私のものがあります。

確かに、ライブラリは、標準的な方法で日付と時刻を処理するための最善の策です。日付/時刻の計算には多くのエッジケースがあるため、開発をライブラリに渡すことができると便利です。

主なノード互換の時間フォーマットライブラリのリストは次のとおりです。

  • Day.js [ 2021-10-06を追加]「同じ最新のAPIを使用したMoment.jsの高速2kB代替」
  • Luxon [ Tampaのおかげで2017-03-29を追加]「JavaScriptの日付と時刻の強力でモダンでフレンドリーなラッパー。」--MomentJSは、不変の型、チェーンなどを使用してゼロから再構築されました。
  • Moment.js [ Mustafaのおかげで]「日付の解析、操作、およびフォーマット用の軽量(4.3k)javascript日付ライブラリ」-国際化、計算、および相対的な日付形式が含まれています-更新2017-03-29:それほど軽量ではありません特にタイムゾーンのサポートが必要な場合は、これ以上ですが、それでも最も包括的なソリューションです。-アップデート2021-02-28:アクティブな開発は終了しました。
  • date-fns [ Fractalfのおかげで2017-03-29を追加]小さく、高速で、標準のJS日付オブジェクトで動作します。タイムゾーンのサポートが必要ない場合は、Momentの優れた代替手段です。
  • SugarJS -JavaScriptの組み込みオブジェクトタイプに多くの必要な機能を追加する一般的なヘルパーライブラリ。見栄えの良い日付/時刻機能がいくつか含まれています。
  • strftime-まさにそれが言うこと、素晴らしくてシンプル
  • dateutil-これは私がMomentJSの前に使用していたものです
  • node-formatdate
  • TimeTraveller-「TimeTravelerは、日付を処理するための一連のユーティリティメソッドを提供します。加算と減算からフォーマットまで。TimeTravelerは、グローバル名前空間を汚染することなく、作成した日付オブジェクトのみを拡張します。」
  • Tempus [ Dan Dに感謝]-更新:これはNodeでも使用でき、npmでデプロイできます。ドキュメントを参照してください

非ノードライブラリもあります。

  • Datejs [ PeterOlsonのおかげで]-npmまたはGitHubにパッケージ化されていないため、Nodeでの使用はそれほど簡単ではありません-2007年以降更新されていないため、あまりお勧めできません。
于 2012-05-23T09:25:50.433 に答える
81

変換用のライブラリがあります:

npm install dateformat

次に、要件を記述します。

var dateFormat = require('dateformat');

次に、値をバインドします。

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

dateformatを参照してください

于 2013-08-29T10:50:21.683 に答える
50

私は一般的に図書館に対して何も反対していません。この場合、アプリケーションプロセスの他の部分の日付が大きくない限り、汎用ライブラリはやり過ぎのように見えます。

このような小さな効用関数を書くことは、初心者と熟練したプログラマーの両方にとっても同様に有用な演習であり、私たちの間の初心者にとっては学習体験になる可能性があります。

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"  */
于 2012-05-18T05:41:14.340 に答える
15

ライブラリを使用せずに、希望の形式でタイムスタンプを取得するための読みやすくカスタマイズ可能な方法:

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())
}

(UTC形式で時間が必要な場合は、関数呼び出しを変更するだけです。たとえば、「getMonth」は「getUTCMonth」になります)

于 2016-03-14T22:27:50.483 に答える
12

以下のコードとMDNへのリンクを確認してください

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

// exact format
console.log(new Date().toISOString().replace('T', ' ').substring(0, 19))

// other formats
console.log(new Date().toUTCString())
console.log(new Date().toLocaleString('en-US'))
console.log(new Date().toString())

于 2020-06-26T19:37:44.910 に答える
10

javascriptライブラリsugar.js(http://sugarjs.com/)には、日付をフォーマットする関数があります

例:

Date.create().format('{dd}/{MM}/{yyyy} {hh}:{mm}:{ss}.{fff}')
于 2013-04-12T17:18:34.650 に答える
8

私はNodejsとangularjsでdateformatを使用しているので、とても良いです

インストール

$ 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
...
于 2018-07-11T00:52:01.430 に答える
7

次のように、Dateオブジェクトで提供されるメソッドを使用します。

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));

本当に汚いように見えますが、JavaScriptコアメソッドで正常に動作するはずです

于 2013-02-27T03:41:22.710 に答える
4
new Date(2015,1,3,15,30).toLocaleString()

//=> 2015-02-03 15:30:00
于 2016-10-10T13:32:21.723 に答える
4

代替案#6233...。

UTCオフセットを現地時間に追加し、オブジェクトの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));

デフォルトで現地時間の日付オブジェクトを作成しています。UTCオフセットを追加しています。日付フォーマットオブジェクトを作成しています。UTCの日付/時刻を希望の形式で表示しています:

ここに画像の説明を入力してください

于 2019-04-29T13:12:04.783 に答える
4

日付の書式設定で最も簡単な方法は、momentlibを使用することです。https://momentjs.com/

const moment = require('moment')
const current = moment().utc().format('Y-M-D H:M:S')
于 2020-03-20T07:18:32.587 に答える
2

タイムゾーンを反映して、これを使用できます

var datetime = new Date();
var dateString = new Date(
  datetime.getTime() - datetime.getTimezoneOffset() * 60000
);
var curr_time = dateString.toISOString().replace("T", " ").substr(0, 19);
console.log(curr_time);

于 2021-05-31T01:35:01.477 に答える
1

xクラスライブラリx-dateのサブモジュールの1つであるモジュールを使用します;

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'
于 2016-07-17T15:17:54.547 に答える
0

ロケールと言語のサポートの鐘や笛のないシンプルなフォーマットライブラリが必要でした。だから私は変更しました

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

そしてそれを使用しました。https://github.com/adgang/atom-time/blob/master/lib/dateformat.jsを参照してください

ドキュメントはかなり明確です。

于 2015-05-17T21:25:19.850 に答える
0
new Date().toString("yyyyMMddHHmmss").
      replace(/T/, ' ').  
      replace(/\..+/, '') 

.toString()を使用すると、これは次の形式になります

replace(/ T /、'')。//Tを''2017-01-15T..に置き換えます。

replace(/..+/、'')// for ... 13:50:16.1271

たとえば、vardatehour:を参照してください。

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);

于 2017-01-16T00:05:43.383 に答える
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;
}
于 2018-08-23T05:28:53.450 に答える
0

これが私が書いた軽量のライブラリsimple-date-formatで、node.jsとブラウザの両方で機能します

インストール

  • NPMでインストール
npm install @riversun/simple-date-format

また

  • 直接ロード(ブラウザ用)、
<script src="https://cdn.jsdelivr.net/npm/@riversun/simple-date-format/lib/simple-date-format.js"></script>

ライブラリをロード

  • ES6
import SimpleDateFormat from "@riversun/simple-date-format";
  • CommonJS(node.js)
const SimpleDateFormat = require('@riversun/simple-date-format');

使用法1

const date = new Date('2018/07/17 12:08:56');
const sdf = new SimpleDateFormat();
console.log(sdf.formatWith("yyyy-MM-dd'T'HH:mm:ssXXX", date));//to be "2018-07-17T12:08:56+09:00"

ペンで実行

使用法2

const date = new Date('2018/07/17 12:08:56');
const sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
console.log(sdf.format(date));//to be "2018-07-17T12:08:56+09:00"

フォーマット用のパターン

https://github.com/riversun/simple-date-format#pattern-of-the-date

于 2020-07-15T07:35:51.183 に答える
0

'dateformat'からdateFormatをインポートします。var ano = new Date()

<footer>
    <span>{props.data.footer_desc} <a href={props.data.footer_link}>{props.data.footer_text_link}</a> {" "}
    ({day = dateFormat(props.data.updatedAt, "yyyy")})
            </span>
</footer>

ロダペ

于 2022-01-03T16:47:58.850 に答える
0

これが便利なバニラワンライナーです(これから採用

var timestamp = 
  new Date((dt = new Date()).getTime() - dt.getTimezoneOffset() * 60000)
  .toISOString()
  .replace(/(.*)T(.*)\..*/,'$1 $2')
console.log(timestamp)

出力:2022-02-11 11:57:39

于 2022-02-11T20:04:55.840 に答える
-1

これは実際にあなたの質問に答えると思います。

javascriptで日付/時刻を操作するのはとても面倒です。いくつかの白髪の後、私はそれが実際にはかなり単純であることに気づきました。

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);

これがフィドルです

于 2018-05-07T21:07:46.070 に答える