Skip to content

Instantly share code, notes, and snippets.

@hyuki

hyuki/chat.md Secret

Created March 23, 2023 20:56
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hyuki/f1fbe20dd81252609488272f053de6c9 to your computer and use it in GitHub Desktop.
Save hyuki/f1fbe20dd81252609488272f053de6c9 to your computer and use it in GitHub Desktop.
#ChatGPT と結城浩の対話: JavaScriptで今日の日付を得る/Bookmarkletのコード

Model: GPT-4

今日の日付を"YYYY-MM-DD"という形式の文字列として取得するJavaScriptのコードを教えてください。日付はUTCではなくローカル時間です。

JavaScriptでローカル時間を "YYYY-MM-DD" の形式の文字列で取得するには、以下のようなコードを使用できます。

const today = new Date();
const yyyy = today.getFullYear();
const mm = String(today.getMonth() + 1).padStart(2, '0');
const dd = String(today.getDate()).padStart(2, '0');

const formattedDate = `${yyyy}-${mm}-${dd}`;
console.log(formattedDate);

このコードでは、Date オブジェクトを使って現在の日付を取得し、それぞれの要素(年、月、日)を整形して "YYYY-MM-DD" の形式にしています。月と日については、1桁の場合には0でパディングするように padStart を使用しています。

ありがとうございます。

今日の日付を使ってYYYY-MM-DD_という形式の文字列をクリップボードにコピーするBookmarkletを作ったのですが、これでうまく行くでしょうか。

function saveToClipboard(s) {
  navigator.clipboard.writeText(s).then(function() {
    alert(`${s}をクリップボードにコピーしました。`);
  }, function() {
    window.prompt('手動でクリップボードにコピーしてください。', s);
  });
}

function start() {
  const today = new Date();
  const yyyy = today.getFullYear();
  const mm = String(today.getMonth() + 1).padStart(2, '0');
  const dd = String(today.getDate()).padStart(2, '0');
  const formattedDate = `${yyyy}-${mm}-${dd}_`;
  console.log(formattedDate);
  saveToClipboard(formattedDate);
}

start();

はい、このBookmarkletは期待通りに動作すると思われます。ただし、以下の点に注意してください。

  1. このコードは、Bookmarkletの形式で実行するために、すべてのコードを1行にまとめる必要があります。以下は1行にまとめたバージョンです。 javascript:(function(){function saveToClipboard(s){navigator.clipboard.writeText(s).then(function(){alert(${s}をクリップボードにコピーしました。);},function(){window.prompt('手動でクリップボードにコピーしてください。',s);});}function start(){const today=new Date();const yyyy=today.getFullYear();const mm=String(today.getMonth()+1).padStart(2,'0');const dd=String(today.getDate()).padStart(2,'0');const formattedDate=${yyyy}-${mm}-${dd}_;console.log(formattedDate);saveToClipboard(formattedDate);}start();})();
  2. このコードは、ブラウザがnavigator.clipboard.writeText()をサポートしている場合にのみ動作します。これは、ほとんどの現代のブラウザでサポートされていますが、古いブラウザでは動作しないことがあります。また、このAPIは、ページがセキュアなコンテキスト(HTTPS)で実行されている場合にのみ利用可能です。

これらの点を考慮して、ブックマークレットを使って日付をクリップボードにコピーすることができます。上記の1行にまとめたバージョンをブックマークレットとして追加してください。

ありがとうございます。Bookmarkletに変換してくださったのですね。

はい、Bookmarkletとして利用できるようにコードを1行にまとめました。この1行のコードをブックマークのURLとして追加することで、ブックマークをクリックするだけでローカル時間の日付を "YYYY-MM-DD_" 形式でクリップボードにコピーできます。

もし何か質問や懸念があれば、お気軽にお聞きください。お手伝いできることがあれば喜んで対応いたします。

うまく動きました。ありがとうございます。

うまく動作して良かったです!もし今後も質問やサポートが必要な場合は、お気軽にお問い合わせください。どんな質問にも喜んでお答えいたします。どうぞよろしくお願いいたします。

@hyuki
Copy link
Author

hyuki commented Mar 23, 2023

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment