আরএফসি -৩39৩? ফর্ম্যাটে কোনও তারিখ মুদ্রণের জন্য একটি স্ট্যান্ডার্ড কমান্ড কী?


19

dateকমান্ড যেমন জিনিস, যা দু: খিত ধরনের যেহেতু বোঝায় যা RFC-3339 আধুনিক, ব্যাপক, বিবেকী (ইমেল যা ত্ত আধুনিক কিংবা বিবেকী হয় ব্যতীত) সর্বত্র ব্যবহার করা ফরম্যাট অফার করে না।

আমার টাইমজোন অফসেটটি বর্তমানে -08: 00 হয় তাই এই কমান্ডের সহজতম রূপটি বর্তমান সময়ের হিসাবে মুদ্রণ করা উচিত 2013-09-05T14:58:33.102-08:00


আপনি কোন স্ট্যান্ডার্ড (গুলি) এ আগ্রহী?
স্টাফেন চেজেলাস

আমি জিএনইউর সাথে ব্যক্তিগতভাবে ভাল আছি তবে জিনিসগুলির দুর্দান্ত পরিকল্পনায় এটি এর চেয়ে আরও বিস্তৃত হওয়া উচিত। এটি একটি যুক্তিসঙ্গত ডিফল্ট (সংক্ষিপ্ত বিকল্প, মিলিসেকেন্ড যথার্থতা) এর সাথে আসা উচিত এবং সাবসেকেন্ড যথার্থতা (0 বা 9 বাদে অন্য সংখ্যাগুলির সংখ্যা) নির্দিষ্ট করার উপায় থাকতে হবে।
মার্টিন জাম্বন

1
এটা না একটি বিবেকী বিন্যাস: হোয়াইটস্পেস মোট অনুপস্থিতি এটা তোলে অকারণে কঠিন মানুষের পড়ার জন্য। 2013-09-05 14:58:33.102 -0800স্পেসগুলি একেবারেই ব্যবহার করা উচিত নয় এমন কোনও কারণ থাকা ব্যতীত আপনার সামান্য প্রকরণটি ব্যবহার করা উচিত ।
zwol

1
আমি এটিকে মেইলের তারিখের ফর্ম্যাট (আরএফসি 822, 2822) এর সাথে তুলনা করছিলাম যা মানব এবং মেশিন উভয়ের জন্যই পড়া শক্ত।
মার্টিন জাম্বন

উত্তর:


30

দেখে মনে হচ্ছে আপনি জিএনইউ বাস্তবায়ন date(সংস্করণ 5.90 বা তার বেশি) এর সুইচ ব্যবহার করে একাধিক ফর্ম্যাট করতে পারেন --rfc3339=

উদাহরণ

$ date --rfc-3339=date
2014-03-19

$ date --rfc-3339=seconds
2014-03-19 18:00:05-04:00

$ date --rfc-3339=ns
2014-03-19 18:00:08.179780629-04:00

আপনি যদি Tহ্যাক হিসাবে যুক্ত হতে চান তবে :

$ date --rfc-3339=seconds | sed 's/ /T/'
2014-03-19T18:35:03-04:00

আপনি যদি এটি মিলি সেকেন্ডে চান:

$ date --rfc-3339=ns | sed 's/ /T/; s/\(\....\).*\([+-]\)/\1\2/g'
2014-03-19T18:42:52.362-04:00

তথ্যসূত্র


7
আজকাল, 'টি' পেতে কোনও হ্যাকের প্রয়োজন নেই। --iso-8601' option accepts the same arguments as --Rfc-3339`, এবং তার আউটপুটে 'টি' অন্তর্ভুক্ত করা হয়েছে।
তি স্টারগা

1
শেড অংশটি আটলান্টিকের পূর্বেও কাজ s/\(\....\).*-/\1-/gকরা উচিত s/\(\....\).*\([+-]\)/\1\2/g
সোভান্তে

1
@ সোভান্ট - স্থির বিশদটির জন্য ধন্যবাদ।
slm

2
@ ইউনিল যা আসলে সঠিক নয়, আরএফসি 3339 বলেছে: NOTE: ISO 8601 defines date and time separated by "T".আরএফসি 3339 এর পরিবর্তে আপনাকে কোনও স্থান ব্যবহার করার অনুমতি দেয়। Ietf.org/rfc/rfc3339.txt বিভাগ 5.6 পড়ুন
rwenz3l

1
@ rwenz3l আমার দোষ আমি কেবলমাত্র এবিএনএফ অংশটি পড়েছি এবং নোটগুলি মিস করেছি। এটা ইশারা জন্য ধন্যবাদ!
ইওনিল

18

জিএনইউ date(5.90 বা তার বেশি) এর সাথে:

$ TZ=America/Anchorage date '+%FT%T.%N%:z'
2014-03-19T14:29:31.041119357-08:00

প্রতিস্থাপন %Nসঙ্গে %3N, মিলিসেকেন্ডে জন্য %6Nমাইক্রো-সেকেন্ডের জন্য ...

আফাইক, পসিক্স, ইউনিক্স বা এলএসবি স্পেসিফিকেশনের কোনওটিই এমন কোনও কমান্ড নির্দিষ্ট করে না যা সাব-সেকেন্ড গ্রানুলারিটির সাথে সময় প্রদর্শন করতে পারে, তবে ভগ্নাংশটি আরএফসি 3339 এ optionচ্ছিক।

পসিক্স / ইউনিক্স / এলএসবি স্ট্রফটাইম %zটিজেড অফসেট হিসাবে প্রদর্শন করতে সমর্থন করে -0800, তাই আপনি সম্ভবত সবচেয়ে পোর্টেবল যাচ্ছেন তা হ'ল:

 $ TZ=America/Anchorage perl -MPOSIX -le '$t = strftime "%Y-%m-%dT%T%z",
   localtime; $t =~ s/..$/:$&/; print $t'
 2014-03-19T14:30:23-08:00

8

গনুহ dateআইএসও-8601 বিন্যাসে গড়ে তুলেছে - যে বেশ কাছে বা এমনকি বোঝায় যা RFC-3339 থেকে idential নয়?

1065 % date --iso-8601=seconds
2014-03-19T16:51:16-0600

আইএসও -8601 তারিখ এবং সময়গুলির বিভিন্ন ফর্ম্যাটিংয়ের অনুমতি দেয় তবে আমি মনে করি যে ওপি বিশেষত ডাব্লু 3 সি তারিখের ফর্ম্যাটটির জন্য জিজ্ঞাসা করছে "সম্পূর্ণ তারিখ প্লাস ঘন্টা, মিনিট, সেকেন্ড এবং দ্বিতীয় ওয়াইওয়াইওয়াই-এমএম-ডিডিটিএইচ এর দশমিক ভগ্নাংশ: মিমি: এসএসটিজেডি (যেমন 1997-07-16T19: 20: 30.45 + 01: 00) " - ডাব্লু 3 সি তারিখ এবং সময় ফর্ম্যাটগুলি
hakre

8

কিভাবে ভাল পুরানো সম্পর্কে:

$ date +%Y-%m-%dT%T%z
2015-10-29T14:47:06+0200

টাইম জোনের তথ্য কোথায়?
রাফেল অ্যারেন্স

এটি ম্যাক এবং লিনাক্স 'ডেট' উভয়তেই কাজ করে
ইরান চেতজ্রোনি

1
মিলিসেকেন্ড সম্পর্কে কীভাবে?
মার্টিন জাম্বন

6
এখানে দ্রুত নোট, আরএফসিটি না খোলায়, টাইমজোন বিভাগটি 0200একটি কোলন অনুপস্থিত, যা কিছু সিস্টেমের জন্য এটি প্রয়োজন যা এটি ভেঙে যেতে পারে।
মাইক ম্যাকিনটোস

2
@ মাইকম্যাকিনটোশের নোট প্রাসঙ্গিক; আউটপুট এখানে দেখানো হয় না একটি আইনি জন্য RFC 3339 তারিখ। টাইমজোন বিভাগে কোলনটি আরএফসি 3339 এর জন্য প্রয়োজনীয়; সংজ্ঞা দেখতে time-numoffsettools.ietf.org/html/rfc3339#section-5.6
মার্ক আমেরিকা

7

আপনি আরএফসি 3339 (ISO8601) অনুসারে সময় ফর্ম্যাট করতে পারেন :

$ date -u +"%Y-%m-%dT%H:%M:%SZ"
2016-11-08T08:52:55Z

দ্রষ্টব্য: এই ফর্ম্যাটটি লেবেল স্কিমা কনভেনশন আরসি 1.0 তেও ব্যবহৃত হয়


এটি কোনও বৈধ আরএফসি 3339 নয়। Ran `` তারিখ +% Y-% m-% dT% T% z `` `এর ইরানের উত্তর সঠিক এবং কম অক্ষর। আপনি যদি ইউটিসি পাস -U পতাকাতে চান তবে টাইমজোন অফসেটটি শূন্য করবে।
ব্রাইসবার্গ

সঙ্গে -uপতাকা এই উত্তরটি সঠিক, তাই না?
লাসি

0
echo "Local date only:"
date '+%Y-%m-%d'
echo
echo "Local date and time:"
date '+%Y-%m-%dT%H:%M:%S%z' | sed 's@^.\{22\}@&:@'
echo
echo "UTC date and time:"
date -u '+%Y-%m-%dT%H:%M:%SZ'

এই কমান্ডগুলি %zরূপান্তর স্পেসিফিকেশন ব্যতীত POSIX- সামঞ্জস্যপূর্ণ । তবে, %zলিনাক্স, ম্যাকস, ফ্রিবিএসডি, ওপেনবিএসডি, নেটবিএসডি, ড্রাগনফ্লাই বিএসডি, সোলারিস, মিনিক্স এবং হাইকুতে একইভাবে বহুল সমর্থন রয়েছে। এটি বুসিবক্স, টয়বক্স এবং এসবেসে (suckless.org বেস সিস্টেম ইউটিলিটিস) সরঞ্জামগুলির সাথেও কাজ করে। যেহেতু %zটাইমজোনটি ±HHMMফর্ম্যাটটিতে অফসেট আউটপুট দেয় তাই আমাদের sedএকটি কোলন যুক্ত করতে এবং এটিকে পরিবর্তন করার জন্য পাইপ প্রয়োজন ±HH:MM

দ্রষ্টব্য: উত্তরাধিকারী প্রকল্পের dateকমান্ডটির বেমানান %zআউটপুট রয়েছে: এটি কোনও +চিহ্ন মুদ্রণ করে না ।

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