12 घंटे का समय रूपांतरण


10

चुनौती

12-घंटे के प्रारूप में समय को रूपांतरित करें और प्रिंट करें। HH:MM AM/PM

उदाहरण

इनपुट:

  • 'Fri Jun 30 2017 21:14:20 GMT-0700 (PDT)'
  • 'Fri Jun 30 2017 00:10:23 GMT-0700 (PDT)'
  • 'Fri Jun 30 2017 12:10:23 GMT-0700 (PDT)'
  • 'Sat Jun 31 2018 8:06:20 GMT-0700 (PDT)'
  • 'Fri Jul 01 2017 01:14:20 GMT-0700 (PDT)'
  • 'Sat Apr 10 2020 09:06:20 GMT-0700 (PDT)'

ouput:

  • 9:14 PM
  • 12:10 AM
  • 12:10 PM
  • 08:06 AM
  • 1:14 AM
  • 09:06 AM

ठीक अंक

  • एक अंकों की संख्या से पहले एक शून्य ठीक है , किसी भी शून्य की अनुमति नहीं है। निम्नलिखित उदाहरणों की अनुमति है :

    • 9:06 AM

    • 09:06 AM

  • सभी परीक्षण वर्ष बाद होंगे 999(प्रत्येक वर्ष बिल्कुल 4 अंक होंगे)

नियम


सुझाए गए परीक्षण मामले: 00:10:23 --> 12:10 AMऔर 12:10:23 --> 12:10 PM
अरनुलद

हम वहाँ चलें। अगर आपको कुछ और दिखे तो मुझे बदल देना चाहिए। सलाह के लिये धन्यवाद!
जोकर


2
क्या हम यह मान सकते हैं कि कार्यक्रम को चलाने के लिए जो समय दिया गया है, उसमें समय दिया गया है? ( 'Fri Jun 30 2017 21:14:20 GMT-0400 (EDT)'मेरे लिए जैसे )
ETHproductions

9
erm, 31 जून मौजूद नहीं है। क्या यह सही है?
एरिक लेगरग्रेन

जवाबों:


7

जावास्क्रिप्ट (ईएस 6), 69 बाइट्स

d=>new Date(d).toLocaleString(0,{hour:n='numeric',minute:n,hour12:1})


जावास्क्रिप्ट (ईएस 6), 58 55 बाइट्स

मान लें कि आप संयुक्त राज्य में हैं।

d=>new Date(d).toLocaleTimeString().replace(/:.. /,' ')


जावास्क्रिप्ट (ईएस 6), 81 78 बाइट्स

एकल-अंकीय घंटों में एक अग्रणी 0 को आउटपुट करने से पहले उत्तर को वैकल्पिक बना दिया गया था और प्रमुख 0 के बिना परीक्षण मामलों को जोड़ा गया था।

d=>([m,s]=d.slice(16).split`:`,`0${m%12||12}:${s} ${m<12?'A':'P'}M`.slice(-8))


1
मैं बदलने के बारे में सोच रहा था ${m>12?'P':'A'}Mकरने के लिए ${"AP"[m>12]}M, लेकिन यह (के साथ की तरह एक पूर्णांक के लिए सूचकांक कास्टिंग बिना काम नहीं करता |0) है, जो यह एक ही लंबाई बनाता है। अच्छी तरह से गोल्फ।
kamoroso94

आप ,213 बाइट्स को बचाने के लिए स्लाइस में छोड़ सकते हैं ।
रिक हिचकॉक

वापसी के लिए 12:10 बजे Fri Jun 30 2017 12:10:23 GMT-0700 (PDT)। पीएम होना चाहिए। बदलने m>12के लिए m>11इसे ठीक करना चाहिए।
रिक हिचकॉक

आपको 4 बाइट्स बचाने के लिए:d=>(new Date(d).toLocaleString(0,{hour:'numeric',minute:'numeric',hour12:1}))
ज़ोएकेवर

वास्तव में, आप वास्तव में निम्न के साथ 25 बाइट्स बचा सकते हैं:d=>(new Date(d).toLocaleTimeString().replace(/:\d+/,''))
ज़ोकेवर

6

पायथन 2 , 66 बाइट्स

lambda s:`int(s[15:18])%12`+s[18:21]+'  APMM'[int(s[15:18])>11::2]

इसे ऑनलाइन आज़माएं!


यह उन वर्षों के लिए विफल रहता है जिनके पास 4 अंक से कम हैं (हालांकि मैं अनिश्चित हूं कि क्या उन लोगों के साथ काम करना है)।
नॉटजैगन

मुझे लगता है कि यह ठीक है।
ज़ोकेवर

@ नोटजगन को यह नहीं करना चाहिए, यह सवाल में ऐसा कहता है।
फेडोन

@totallyhuman व्हाट्स, सॉरी।
फेडोन

आप बदल सकते हैं int(s[15:18])>11करने के लिए s[15:18]>"11"?
ETHproductions

5

श + कोरुटिल्स, 22 बाइट्स

date +%I:%M\ %p -d"$1"

(यदि सेकंड की अनुमति है, तो date +%r -d"$1"पर्याप्त है)


प्रभावशाली रूप से कुछ बाइट्स! यह भी अच्छी तरह से किया
zoecarver

4

जावास्क्रिप्ट (ईएस 6), 77 बाइट्स

मान लेता है कि वर्ष में 4 अंक हैं।

s=>`${([,,,h,m]=s.match(/\d./g),x=h%12||12)>9?x:'0'+x}:${m} ${'AP'[h/12|0]}M`

परीक्षण के मामलों


ऊपर की तरह, मुझे बनाने और जवाब देने का एक छोटा तरीका मिल गया है। अपने कोड का उपयोग करने के लिए स्वतंत्र महसूस करें, मुझे नहीं लगता कि यह वास्तव में मेरे स्वयं के प्रश्न का उत्तर देने का किराया है। d=>(new Date(d).toLocaleTimeString().replace(/:\d+/,''))
जोकर

@pudility यह केवल तभी काम करेगा जब आपका लोकेल हो en-USऔर आपका टाइमज़ोन हो GMT-0700 (PDT)। उदाहरण के लिए, इनमें से कोई भी धारणा मेरे लिए सही नहीं है।
अरनुलद

2

जाप , 15 बाइट्स

ÐU¯24)s8 r.³+SS

इसे ऑनलाइन आज़माएं!

12 बाइट्स अगर हम मान सकते हैं कि कंप्यूटर के स्थानीय समय में समय दिया जाएगा:

ÐU s8 r.³+SS

इसे ऑनलाइन आज़माएं!

मैथी दृष्टिकोण, 40 बाइट्स

tG5 r"^.."_<C?+Z+B:°TnZ)%CÄÃ+" {"AP"gT}M

इसे ऑनलाइन टेस्ट करें!



1

PHP, 45 बाइट्स

जवाब में सुधार मैनटवर्क के लिए धन्यवाद

<?=(new DateTime($argv[1]))->format('h:i A');

पहला प्रयास:

<? $d=new DateTime($argv[1]);echo$d->format('h:i A');

Php CLI के माध्यम से उदाहरण का उपयोग:

php d.php "Sat Apr 10 2020 09:06:20 GMT-0700 (PDT)"

यह मेरा पहला गोल्फ प्रयास है।


चर के लिए कोई ज़रूरत नहीं $dहै और कहा कि जिस तरह से आप स्पष्ट से छुटकारा पाने के कर सकते हैं echo: <?=(new DateTime($argv[1]))->format('h:i A');
मैनटवर्क





0

सी #, 145 बाइट्स

namespace System.Linq{s=>{var d=DateTime.Parse(string.Join(" ",s.Split(' ').Skip(1).Take(4)));return d.ToString("h:mm ")+(d.Hour>11?"PM":"AM");}}

पूर्ण / प्रारूपित संस्करण:

namespace System.Linq
{
    class P
    {
        static void Main()
        {
            Func<string, string> f = s =>
            {
                var d = DateTime.Parse(string.Join(" ", s.Split(' ').Skip(1).Take(4)));

                return d.ToString("h:mm ") + (d.Hour > 11 ? "PM" : "AM");
            };

            Console.WriteLine(f("Fri Jun 30 2017 21:14:20 GMT-0700 (PDT)"));
            Console.WriteLine(f("Fri Jun 30 2017 00:10:23 GMT-0700 (PDT)"));
            Console.WriteLine(f("Fri Jun 30 2017 12:10:23 GMT-0700 (PDT)"));
            Console.WriteLine(f("Fri Jul 01 2017 01:14:20 GMT-0700 (PDT)"));
            Console.WriteLine(f("Sat Apr 10 2020 09:06:20 GMT-0700 (PDT)"));

            Console.ReadLine();
        }
    }
}


0

MATL , 9 बाइट्स

5:24)16XO

MATL ऑनलाइन पर यह कोशिश करो ! या सभी परीक्षण मामलों को सत्यापित करें

व्याख्या

5:24    % Push array [5 6 ... 24]
)       % Implicit input. Get characters at those positions. This
        % removes the first four characters with the day of the week
16      % Push 16
XO      % Convert to date string format 16, which is 'HH:MM PM'
        % Implicitly display

क्या हमारा स्पष्टीकरण हो सकता है?
जुबान

1
@totallyhuman ज़रूर, मुझे याद दिलाने के लिए धन्यवाद। संपादित। मूल रूप से बिलिन XOज्यादातर काम करता है
लुइस मेंडू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.