সময় ভ্রমণ শনাক্ত করুন


51

কম্পিউটার আজকাল সর্বত্র রয়েছে - গাড়ি, ট্রেন, স্কেটবোর্ডে এমনকি পারমাণবিক চুল্লিতেও। আপনার সফ্টওয়্যারটি কোনও সময় ভ্রমণের ডিভাইসে চালিত হওয়ার সম্ভাবনা সময়ের বিষয় মাত্র। আপনি কি এটি মোকাবেলা করতে পারেন? আপনি কি অন্তত এটি সনাক্ত করতে পারেন?

তোমার কাজ:

  1. সময় ভ্রমণ শনাক্ত করার জন্য একটি প্রোগ্রাম লিখুন যা সিস্টেমের সময়কে ফাঁকে ফেলে এবং জিজ্ঞাসা করে চলে।
  2. সময় যদি পর পর দু'বার প্রশ্নের মধ্যে এক দিন বা আরও বেশি এগিয়ে যায়, তবে এটি এগিয়ে যাওয়ার সময় ভ্রমণ। এই ক্ষেত্রে, আপনার প্রোগ্রামটি মুদ্রণ করা উচিত:
    TS TS: YYYY? You mean we're in the future?
  3. যদি সময়টি পরপর দুটি প্রশ্নের মধ্যে কোনও পরিমাণে, পিছনে যায় তবে এটি পিছিয়ে সময় ভ্রমণ। এই ক্ষেত্রে, আপনার প্রোগ্রামটি মুদ্রণ করা উচিত:
    TS TS: Back in good old YYYY.
  4. TS TSসময় ভ্রমণের আগে এবং পরে টাইমস্ট্যাম্পগুলি। YYYYগন্তব্য বছর।
  5. টাইমস্ট্যাম্পগুলি যে কোনও ফর্ম্যাটে থাকতে পারে, এর মধ্যে কমপক্ষে 4-অঙ্কের বছর, মাস, দিন, ঘন্টা, মিনিট এবং দ্বিতীয় অন্তর্ভুক্ত থাকে, অ-অঙ্কগুলি দ্বারা পৃথক।

সীমাবদ্ধতা:

  1. আপনাকে অবশ্যই কমপক্ষে 19 তম, 20 ও 21 শতকের তারিখগুলি সমর্থন করবেন।
  2. এই চ্যালেঞ্জ পোস্ট হওয়ার আগে আপনাকে অবশ্যই একটি ভাষা ব্যবহার করতে হবে।
  3. এই চ্যালেঞ্জ পোস্ট হওয়ার পরে আপনাকে অবশ্যই আপনার উত্তরগুলি পোস্ট করতে হবে।
  4. আপনার উত্তর পোস্ট হওয়ার আগে আপনাকে অবশ্যই একটি ভাষা ব্যবহার করতে হবে।
  5. আপনি আপনার উত্তর পোস্ট করার পরেই এটি সম্পাদনা করতে পারেন।
  6. আপনার প্রোগ্রাম অবশ্যই প্রয়োজনীয় আউটপুট ব্যতীত অন্য কোনও আউটপুট মুদ্রণ করতে হবে না। মাঝে মাঝে "গ্রেট স্কট!" অনুমতি দেওয়া হয়.

এটি কোড-গল্ফ। সংক্ষিপ্ত উত্তর জেতে।
প্রাসঙ্গিক মুভি রেফারেন্স সম্ভবত আপনার উত্তরটি খুব দীর্ঘ করে দেবে, তবে আপনাকে উজ্জীবিত করতে পারে।



4
আপনি # 5 সম্পর্কে কিছুটা আরও নির্দিষ্ট হতে পারেন?
মেগো

4
ননডজিটস দ্বারা পৃথক? বু। YYYYMMDDHHmmSS আমার প্রিয় টাইমস্ট্যাম্প ফর্ম্যাট।
স্পার

3
@ একুয়েটস আপনি কীভাবে জানেন? সম্ভবত সিস্টেমের ঘড়িটি প্রকৃতপক্ষে অপরিবর্তনীয় এবং "সেটিং" করা প্রকৃতপক্ষে ভ্রমণের সময়
রুন এফএস

5
সীমাবদ্ধতা 2,3,4,5 সত্যিই কঠোর, আমি জানি না যে আমি এটি পরিচালনা করতে পারি কিনা।
অ্যাশ Shāţi '

উত্তর:


4

সিজেম, 118 বাইট

et:Tes{es_@-[TS*Set:TS*':S]\_864e5<{[1$et0="? You mean we're in the future?"N]o}|0<{[_"Back in good old "et0='.N]o}&}g

এটি অনলাইন দোভাষীর সাথে কাজ করে না।

আমার কম্পিউটারের সময় দু'বার সামঞ্জস্য করার পরে নমুনা আউটপুট:

2015 10 21 11 2 45 1 3 -10800000 2015 10 23 11 2 45 0 5 -10800000: 2015? You mean we're in the future?
2015 10 23 11 2 53 448 5 -10800000 2015 10 21 11 2 52 0 3 -10800000: Back in good old 2015.

1
এটি অনলাইন দোভাষীর সাথে কেন কাজ করে না (এ ছাড়া এটি আপনাকে সময়ের সাথে ঝাঁকুনি দেয় না)?
ugoren

1
কারণ এটি একটি অসীম লুপ এবং অনলাইন ইন্টারপ্রেটার প্রোগ্রামটি শেষ হওয়ার পরে আউটপুট প্রদর্শন করে।
ডেনিস

1
সুতরাং আপনি কীভাবে পরীক্ষা করেন যে এটি কাজ করে?
ugoren

1
জাভা দোভাষী ব্যবহার করা ।
ডেনিস

9

পাইথন 2, 210 বাইট

from datetime import*
o=0
while 1:n=datetime.now();o=o or n;print"%s;%s: %s? You mean we're in the future?"%(o,n,n.year)if(n-o).days>=1else"%s;%s: Back in good old %s."%(n,o,n.year)if(n<o)else"Great Scott!";o=n

টাইমস্ট্যাম্পগুলি YYYY-MM-DD HH:MM:SSসেমিকোলনগুলি দিয়ে আলাদা করে ফর্ম্যাটে মুদ্রিত হয় । এটি মুদ্রণের জন্য 2 টি অক্ষর ছোট হওয়ায় 3 থেকে পাইথন 2 এ স্যুইচ করা হয়েছে। স্পাম করে দিয়ে stdout- এ Great Scott!জন্য normies , অ-সময়-ভ্রমণকারীরা যেহেতু এটি সহজ এবং সস্তা চেয়ে একটি শর্তাধীন মুদ্রণ সেট আপ যে কাজ করতে।


এটি কি ইনপুট হিসাবে সময় আশা করে? এটি যা জিজ্ঞাসিত তা নয় (সম্ভবত এটি অস্পষ্ট)। এছাড়াও, সময় ভাল আচরণ করার সময় খালি লাইনগুলি মুদ্রণ করা মনে হয়।
ugoren

আমি ওএসকে জিজ্ঞাসা করছিলাম, ব্যবহারকারীকে নয়। আমি স্পষ্ট করব।
ugoren

8

জাভাস্ক্রিপ্ট (ES6), 263 বাইট

n=Date;o=n.now();(function g(){k=new n;j=new n(o);s=`${k} ${o} `;if(n.now()-o>86400)console.log(`${s}${k.getFullYear()}? You mean we're in the future?`);if(o-n.now()>84600){console.log(`${s}Back in good old ${k.getFullYear()}.`);}o=n.now();setTimeout(g,100);}());

এটি সম্ভবত আরও দক্ষ / ছোট করার জন্য কিছু পুনর্লিখনের মাধ্যমে এটি করতে পারে।

উৎস:

n=Date;
o=n.now();

(function go() {
   k=new n;
   j=new n(o);
   s=`${k} ${o} `;
   if (n.now() - o > 86400) {
      console.log(`${s}${k.getFullYear()}? You mean we're in the future?`);
   }
   if (o - n.now() > 84600) {
      console.log(`${s}Back in good old ${k.getFullYear()}.`);
   }
   o=n.now()
   setTimeout(go,100);
}());

1
পিছনের ভ্রমণটি কোনও দিনই নয়, কোনও পরিমাণে পিছিয়ে যাওয়া হিসাবে সংজ্ঞায়িত হয়। এছাড়াও, একাধিক now()কলের কারণে এটি কোনও ভ্রমণের ইভেন্ট মিস করতে পারে।
ugoren

এটিকে গল্ফ করার একটি প্রচেষ্টা: এন = তারিখ, ও = এন.এনও (); সেটইন্টারভালভাল ("ডি = নতুন এন, এস = ডি +` $ {নতুন এন (ও)} `; এফ = ডি.জেটফুলইয়ার (); যদি ( n.now () - o> 8.64e + 7) কনসোল.লগ (গুলি + এফ + `? আপনার মানে আমরা ভবিষ্যতে?`); যদি (ও> এন.নো ()) কনসোল.লগ (গুলি + `) পুরাতন পুরানো $ {f} .`); ও = এন.নো () ", 100);
স্টেফনচ

আমি মনে করি আপনি প্রথম অংশ গল্ফ করতে পারেন o=(n=Date).now()
কনর ও'ব্রায়েন

+ স্টেফনচ 8.64e+7দুটি অক্ষরের চেয়ে দীর্ঘ 86400
ফ্লোরি

1
@ সিও'বʀɪᴇɴ উফ! আমি ভাবছিলাম কেন এটি কাজ করে না?
ফ্লোরি

5

পাইথন 3, 195

from datetime import*
n=datetime.now
p=n()
while 1:
 c=n();f=(p,c,p.year);s=(0,("%s %s: %s? You mean we're in the future?"%f,"%s %s: Back in good old %s."%f)[p.day>c.day])[p>c];p=c
 if s:print(s)

বর্তমানে গ্রেট স্কট মুদ্রণ করে না কারণ আমি কেবলমাত্র এটি মাঝে মধ্যে তৈরি করার কোনও ভাল উপায় খুঁজে পাই না।


5

বাশ + কোর্টিলস, 177

d()(date -d@"$@")
for((b=`date +%s`;a=`date +%s`;b=a)){
t=`d $a`\ `d $b`
((a<b))&&d $b "+$t: Back in good old %Y."
((a>b+86400))&&d $b "+$t: %Y? You mean we're in the future?"
}

3

রুবি, 194 বাইট

সত্যই এটিকে আকারে কাটাতে এখনও সময় পাইনি। আমি নিশ্চিত যে সেখানে কয়েকটি অপ্টিমাইজেশন লুকিয়ে রয়েছে।

require 'time';t=nil;while 1;n=Time.now;if t;s="#{t} #{n}: ";y=n.year;puts t>n ? "#{s}Back in good old #{y}" : (n>t+86400 ? "#{s}#{y}? You mean we're in the future?": "Great Scott!");end;t=n;end

অবহেলিত (এবং আরও অনেক বেশি পাঠযোগ্য):

require 'time'
t=nil
while 1
  n=Time.now
  if t                                             # on second or later pass
    s="#{t} #{n}: "                                # prepare the timestamp
    y=n.year
    puts t>n ?                                     # if we go back
      "#{s}Back in good old #{y}" :                # timestamp + phrase
      (n>t+86400 ?                                 # else, more than one day forward
        "#{s}#{y}? You mean we're in the future?": # timestamp + future
        "Great Scott!")                            # Great Scott!
  end
  t=n                                              # set a new jump point
end

সম্পাদনা করুন: কোনও মানুষের চেয়ে ওএসকে সময়ের জন্য জিজ্ঞাসা করতে সংশোধন করা হয়েছে।


2
কয়েকটি প্রস্তাবনা: loop{}পরিবর্তে while 1...endব্যবহার করুন +এবং ইন্টারপোলেশনের পরিবর্তে স্ট্রিং কনক্যাটেনেশনের জন্য ব্যবহার করার চেষ্টা করুন ।
voikya

3

লুয়া 5.3, 174 বাইট

T=os.time P=print l=T()::a::t=T()b=l.." "..t..": "y=os.date('%Y',t)_=t<l and
P(b.."Back in good old "..y)or t>l+86399 and
P(b..y.."? You mean we're in the future?")l=t goto a

এটি "টাইমস্ট্যাম্পগুলি যে কোনও ফর্ম্যাটে হতে পারে" নিয়মের বাইরে চলেছে ... যা আমি 1 জানুয়ারী, ১৯ since০ সাল থেকে "সেকেন্ড" বিন্যাসটি ব্যবহার করার স্বাধীনতা নিয়েছি


যদি আমি মুদ্রণের টাইমস্ট্যাম্পগুলির বিবর্ণ ব্যাখ্যা রাখি এবং গ্রহণ করি মীপ ডার্কনেসমীপের কাঠামো, আমি এটিকে (অনৈতিকভাবে) নীচে চেপে ধরতে পারি ...

155 বাইট

T=os.time::G::l=t or T()t=T()_=(t>l+86399or t<l)and
print(l.." "..t..": "..os.date(t<l
and"Back in good old %Y"or"%Y? You mean we're in the future?"))goto G

3
Timestamps may be in any format, that includes at least the 4-digit year, month, day, hour, minute and second, separated by non-digits.- এটি যুগের পর থেকে কয়েক সেকেন্ডের অনুমতি দেয় না।
মেগো

4
ভাল জিনিস এটি কোনও ফর্ম্যাট "বাদ দেয়" না
তারপরে

@ ইউগোরেন সত্যই আপনার প্রয়োজন হিসাবে এই প্রয়োজনটি আরও সুনির্দিষ্ট হওয়া উচিত
মেগো

আমি লুয়ার সাথে পুরোপুরি পরিচিত নই তাই আমি ভুল হতে পারি তবে এটি প্রিন্টের মতো দেখাচ্ছে Back in good ol YYYYতবে এটি মুদ্রিত হওয়া উচিত Back in good old YYYY। (পুরানো
ডিটি

নাহ ভাল ধরা, আমি যেখানেই পারতাম বাইট শেভ করার চেষ্টা করছিলাম :
পি

2

লুয়া 5.3, 179 178 173 171 169 168 163 বাইট

q="%Y %c: "c=os.date::a::d=f f=os.time()_=d and(f-d>86399or f<d)and print(c(q,d)..c(q..(f<d and"Back in good old %Y."or"%Y? You mean we're in the future?")))goto a

পার্শ্ব দ্রষ্টব্য: আপনি যদি একটি পুরো বছরের সংখ্যার প্রয়োজনটি বের করেন তবে ছয় বাইট বিয়োগ করুন। কারণটি হ'ল লুয়ার (বা উইন্ডোজ বা কারও!)% সি পুরো বছর আউটপুট দেয় না। এই কারণে, টাইমস্ট্যাম্পগুলি অদ্ভুত দেখাচ্ছে!

এটি টাইমস্ট্যাম্পগুলির কোনও অ অঙ্কিত অক্ষর দ্বারা পৃথক করা সক্ষম হওয়ার সুবিধাও নেয়!

আমাকে আমার পুরাতন গণিত.অ্যাবস রেফারেন্স এবং অন্যান্য উন্নতি @ থাইम्बरবার্নিন সম্পর্কে অবহিত করার জন্য ধন্যবাদ :)

লুয়া 5.3, 151 বাইট

এটি আসল তারিখের পরিবর্তে টাইমস্ট্যাম্পটি দেখিয়ে সময় প্রকাশের @ তমবার্নাইন পদ্ধতি অনুসরণ করে 'অনুলিপি' দিচ্ছে। এটি প্রতিযোগিতামূলক নয়, যেহেতু আমি মনে করি এটি কিছুটা প্রতারণা, কেবল আমার কাজটি প্রদর্শন করতে এখানে পোস্ট করুন :)

::a::d=f f=os.time()_=d and(f-d>86399or f<d)and print(d.." "..f..os.date(f<d and": Back in good old %Y."or": %Y? You mean we're in the future?"))goto a

1
আমরা আমাদের লুয়া উভয় উত্তর প্রায় একই সময়ে পোস্ট করেছি। সময় ভ্রমণ সম্পর্কে কিছু বলতে হবে।
তারপরে নামারনেইন

আহা, ধন্যবাদ @ থিমবার্নাইন! অবশেষে আমি মন্তব্য করার মতো ক্ষমতা পেয়েছি :)
MeepDarknessMeep

2

সি: 363 বাইট

এই হ্যান্ডি স্ক্রিপ্টটি ব্যবহার করে খাটো করা হয়েছে :

#include<stdio.h>
#include<time.h>
void p(time_t*t){char b[64];strftime(b,64,"%FT%T",localtime(t));printf("%s ",b);}int main(void){time_t a,b,d=60*60*24;int y;time(&a);while(1){time(&b);y=localtime(&b)->tm_year+1900;if(b<a){p(&a);p(&b);printf("Back in good old %d\n",y);}else if(b>a+d){p(&a);p(&b);printf("%d? You mean we're in the future?\n",y);}a=b;sleep(1);}}

মূল:

#include <stdio.h>
#include <time.h>

void p(time_t * t) {
  char b[64];
  strftime(b, 64, "%FT%T", localtime(t));
  printf("%s ", b);
}

int main(void) {
  time_t a, b, d = 60*60*24;
  int y;

  time(&a);
  while(1) {
    time(&b);
    y = localtime(&b)->tm_year+1900;
    if (b < a) {
      p(&a); p(&b); printf("Back in good old %d\n", y);

    } else if (b > a + d) {
      p(&a); p(&b); printf("%d? You mean we're in the future?\n", y);
    }
    a = b;
    sleep(1);
  }
}

উদাহরণ রান:

2015-10-23T23:30:03 1985-06-14T16:27:00 Back in good old 1985   
1985-06-14T16:27:07 1999-02-09T14:15:00 1999? You mean we're in the future?
1999-02-09T14:15:09 2015-02-09T14:15:00 2015? You mean we're in the future?
2015-02-09T14:15:36 2015-10-21T07:28:00 2015? You mean we're in the future?
2015-10-21T07:29:06 1985-10-26T09:00:00 Back in good old 1985
1985-10-26T09:00:28 2055-11-12T06:38:00 2055? You mean we're in the future?
2055-11-12T06:38:12 1919-10-07T00:09:57 Back in good old 1919
1919-10-07T00:09:57 2055-11-12T06:38:14 2055? You mean we're in the future?  # tried to go to 1955 - fail.
2055-11-12T06:39:09 2015-10-23T23:32:03 Back in good old 2015  # auto-time back to 2015 because my laptop didn't like the jump to 2055!

আমার sleepঅনুমানটি সরিয়ে আমি 10 বাইট থেকে মুক্তি পেতে পারি।

যাইহোক, ম্যাক / লিনাক্সের জন্য কিছু সময়-জাম্পিং হ্যান্ডনেস:

sudo date 1026090085  # Sat 26 Oct 1985 09:00:00
sudo date 1021072815  # Wed 21 Oct 2015 07:28:00
sudo date 1112063855  # Intended to be 1955 but is 2055. Don't use!

নিচে নির্দ্বিধায় sleep
ugoren

2

জাভাস্ক্রিপ্ট (ES6) 181 174 170 বাইট

for(a=Date;c=b||a.now(),b=d();e=new a(b).getFullYear(),f=`${a(c)} ${a(b):`})b>c+864e5?(g=alert)`${f} ${e}? You mean we're in the future?`:c>b&&g`${f} Back in good old `+e

দ্রষ্টব্য: রিয়েল টাইম মেশিন দিয়ে পরীক্ষা করা হয়নি।

এই কোডটি ফায়ারফক্স, ক্রোম, এজ, নোড.জেএস হারমোনিতে (বা এই বিষয়টির জন্য io.js ) চলবে । তবে, আমি ব্যবহার করি alert, যাতে নোড এবং আইও সুপারপোর্টের console.logজন্য প্রতিস্থাপন করতে হবে : (187 বাইট)

for(a=Date,b=0;c=b||(d=a.now)(),b=d();e=new a(b).getFullYear(),f=`${a(c)} ${a(b):`})b>c+864e5?(g=console.log)`${f} ${e}? You mean we're in the future?`:c>b&&g`${f} Back in good old ${e}.`

ব্যাখ্যা:

// Using for like a while loop, defining relevant variables:
  for (a = Date, b = 0;
// Defing b and c: c becomes b, b becomes now. Also defining a shorthand for Date.now:                                
  c = b || a.now(),
  b = d();
// Defining Variables Relevant to this loop: e is the year according to b, f is the "TS TS:" string:                        
  e = new a(b).getFullYear(),
  f = `${a(c)} ${a(b):`
  )
// If b is greater than c plus a day (in milliseconds):
  b > c + 864e5 ?
  // Alert Time Forwand String: 
    (g = alert)
    `${f} ${e}? You mean we're in the future?`:
// else if c is greater than b:
  c > b &&
  // Alert Time Back String: 
    g `${f} Back in good old `+e

আমি একটি আরও ছোট লিখতে পরিচালিত করেছি, আপনি এটি দেখতে এবং সম্ভবত আপনার আরও ভাল করতে চান। এছাড়াও, আমি মনে করি এটি দুর্দান্ত!
স্টেফনচ

আপনার সমাধানটি কত বড় ছিল, আমি এটি মারতে পারি কিনা তা দেখতে চাই? ;)
মেয়রমন্টি

নীচে স্ক্রোল করুন বা লিঙ্কটিতে ক্লিক করুন: কোডgolf.stackexchange.com/a/61544/33160 এছাড়াও, আপনি এটি মারার খুব কাছাকাছি! : ডি
স্টিফনটচ

2

পাইথন, 170 16 বাইট

from datetime import*
n=datetime.now
c=n()
while 1:
 p=c;c=n()
 if(c-p).days:print p,"%s:"%c,["%s? You mean we're in the future?","Back in good old %s."][c<p]%c.year

এটি মরগান থ্রাপের উত্তরের অনেক .ণী। এখানে মূল কৌশলটি হ'ল টাইমডেল্টা নরমালাইজেশন, যা অতীতের দিকে এমনকি কিছুটা সামান্য এগিয়ে যাওয়ার সময় ও সময়কে সহজেই নেতিবাচক করে তোলে 0


import*আপনার datetime.উপসর্গের দরকার নেই পরে ।
ugoren

@ ইউগোরেন: এর পরিবর্তে import*একজনকে লেখার অনুমতি দেয় । এ জাতীয় অর্থ একরকম, ...datetime.now()datetime.datetime.now()
হ্যান্ট

বিভ্রান্তিকর উপায়ে এটি করে does
ugoren

1

ক্যাচ অবজেক্টস্ক্রিপ্ট, 199 বাইট

l s k=86400 f  s e=+$H,t=$P($H,",",2) s:'d d=e,s=t s z=$ZDT(h)_" "_$ZDT($H)_": ",y=h\365+1841 w:e>d !,z,y,"? You mean we're in the future?" w:(k*t+e)<(k*s+d) !,z,"Back in good old ",y s h=$H,d=e,s=t

এই সমস্যাটি সরল পুরানো এমএমএসপিএসে সমাধানযোগ্য, তবে অযৌক্তিকভাবে দীর্ঘ হবে কারণ এএনএসআই এমএমপিএসের মধ্যে মানব-পঠনযোগ্য টাইমস্ট্যাম্পগুলিতে তারিখগুলির ফর্ম্যাট করার $ZD[ATE]T[IME]অভ্যন্তরীণ ফাংশন নেই ।

এই প্রোগ্রামটি সম্ভবত পর 31 ডিসেম্বর 9999 আগে 1 জানুয়ারী 1841 সময়-ভ্রমণ, কিংবা সময় ভ্রমণ সনাক্ত করা হবে না যেহেতু এই সীমার হয় গণনার স্বকীয় । এই প্রোগ্রামে শুধুমাত্র দ্বিতীয় স্তরের যথার্থতা রয়েছে; উপ-দ্বিতীয়-স্তরের পিছনের সময়ের গ্লিটগুলি সম্ভবত এর নজরে এড়াবে।$H[OROLOG]


1

টিএসকিউএল, 355 বাইট

কর্মক্ষেত্রে তাই কোনও এসসিএল সার্ভার প্রোডাকশন সার্ভারের সাথে কোনও অভিনব শীতল ঠাঁই থাকে না =)

গল্ফ সংস্করণ

declare @a datetime=getdate(),@b datetime,@d float,@ char(99),@y char(4)while 0=0begin select @b=getdate(),@d=cast(@b as float)-cast(@a as float),@y=' '+DATEPART(y,@b),@=cast(@a as char(20))+' '+cast(@a as char(20))+': 'if @d>=1set @=@+@y+'? You mean we''re in the future?'if @d<0set @=@+'Back in good old '+@y+'.'print @ set @a=@b end

ছোটখাটো পরিবর্তন সহ আরও পঠনযোগ্য সংস্করণ।

declare @t0 datetime = getdate(), @t1 datetime, @d float, @m varchar(99), @y char(4)

while 0=0
begin

    set @t1 = getdate()
    set @d = cast(@t1 as float) - cast(@t0 as float)
    set @y = ' ' + DATEPART(yy, @t1)
    set @m = cast(@t0 as varchar(30)) + ' ' + cast(@t0 as varchar(30)) + ': '

    if @d >= 1 set @m = @m + @y + '? You mean we''re in the future?'
    if @d < 0 set @m = @m +  'Back in good old ' + @y + '.'

    print @m

    set @t0 = @t1
end

টাইমস্ট্যাম্পগুলির ক্ষেত্রে এসকিউএল তেমন খারাপ নয় কারণ এটি প্রথম শ্রেণির ডেটা টাইপ।

গল্ফের স্বার্থে আমরা 3 মিলিসেকেন্ড যথার্থতার সাথে একটি প্রকার ব্যবহার করছি। লুপ নিজে থেকে পুনরুক্তি করতে কম লাগে (আপনার সার্ভারের উপর নির্ভর করে)। এখানে মূল কীটি আন্তঃস্থল যে সময় স্ট্যাম্পটি একটি ভাসা এবং পূর্ণসংখ্যার ধরণটি গণনা করে যে কত দিন কেটে গেছে। 31 ডিসেম্বর, 9999 তারিখের পরিসীমা থেকে 1 ই জানুয়ারী 1753 এ এটি খারাপ কাজ করে।


1

ভিবিএ, 258 বাইট

সাথে দৌড়ে: উইন্ডোজ 7 এ এক্সেল 2007

305 বাইট যদি ব্যবহারের প্রয়োজন হয়

আপনি যদি একটি একক থ্রেডেড সিঙ্গল কোর কম্পিউটারে থাকেন তবে সম্ভবত এটি সিপিইউ এবং ক্র্যাশ এক্সেল / উইন্ডোজকে সর্বাধিক সতর্ক করে দিন (সম্ভবত 1985 সালে পাওয়া যাবে)

Sub q()
h=CDbl(Now())
While 1
t=CDbl(Now())
If t>h+1 Then Debug.Print (CDate(t) & " " & CDate(h) & ":" & Year(t) & "? You mean we're in the future?")
If t<h Then Debug.Print (CDate(t) & " " & CDate(h) & ": Back in good old " & Year(t) & ".")
h=t
Wend
End Sub

আপনি যদি এই কোডটি "টেস্টযোগ্য" হতে চান তবে তার Application.Wait (Now() + TimeValue("0:00:01"))পরে যুক্ত করুনh=t

আউটপুট

10/22/2015 3:04:45 PM 10/22/2015 3:04:43 PM:2015?You mean we're in the future?
10/22/2015 3:06:48 PM 10/22/2015 3:06:46 PM: Back in good old 2015.

নীচে আমি ব্যবহৃত পরীক্ষার ফাইলটি ব্যবহার করছি। উইন্ডোজ মাঝে মাঝে কতটা সুরক্ষা দেয় সে সম্পর্কে আমি সত্যই আশ্চর্য। সমস্ত কম্পিউটারে প্রত্যাশার মতো চলতে পারে না

নিজস্ব ঝুঁকিতে চালান মেজর স্থায়ী পার্শ্ব প্রতিক্রিয়া থাকতে পারে !!!!
Sub DOC() t = 31346.6868055556 Date = DateSerial(Year(t), Month(t), Day(t)) Time = TimeSerial(Hour(t), Minute(t), Second(t)) q End Sub


1

জাভাস্ক্রিপ্ট 173 169 162 বাইট

জাভাস্ক্রিপ্ট বেশ জনপ্রিয় ...

for(e=Date,n=e.now;o=n(a=alert);)d=new e,f=d.getFullYear(n(o>n(s=d+` ${e(o)}:`)&&a(s+`Back in good old ${f}.`))-o>864e5&&a(s+f+`? You mean we're in the future?`))

ব্যাখ্যা (কোডটির পুরাতন সংস্করণ):

for(e=Date,n=e.now,a=alert,o=n();;o=n()) //Set up the variables and update o, the previous time

d=new e,s=d+` ${e(o)} `,f=d.getFullYear(), //d is the date, s is a string with the 2 timestamps, f is the year
n()-o>8.64e7&&a(s+f+`? You mean we're in the future?`), //Future check
o>n()&&a(s+`Back in good old ${f}.`) //Past check

0

প্রসেসিং, 270 বাইট

int p;long x=System.currentTimeMillis();void draw(){int q=millis(),y=year();if(q<p){t(p);print("Back in good old "+y+".");}if(q>p+86400000){t(p);print(y+"? You mean we're in the future?");}p=q;}void t(int m){print(new java.util.Date(x+m)+" "+new java.util.Date()+": ");}

সম্প্রসারিত:

int p;
long x=System.currentTimeMillis();
void draw() {
  int q=millis(), y=year();
  if (q<p) {
    t(p);
    print("Back in good old "+y+".");
  }
  if (q>p+86400000) {
    t(p);
    print(y+"? You mean we're in the future?");
  }
  p=q;
}
void t(int m) {
  print(new java.util.Date(x+m)+" "+new java.util.Date()+": ");
}

নমুনা আউটপুট:

Wed Oct 21 13:21:59 EDT 2015 Mon Oct 19 13:21:59 EDT 2015: Back in good old 2015.
Mon Oct 19 13:22:08 EDT 2015 Wed Oct 21 13:22:08 EDT 2015: 2015? You mean we're in the future

0

রুবি, 160 157 155 154 বাইট

এখানে গল্ফ করার জন্য অনেক কিছুই

a=Time.new;loop{b,s,y=Time.new,"#{a} #{b}: ",b.year;$><<(a>b ? s+"Back in good old #{y}.\n":b>a+86400 ? s+"#{y}? You mean we're in the future?\n":"");a=b}

0

গণিত, 295 বাইট

প্রোগ্রামটি প্রতি সেকেন্ডে ওএসকে নতুন টিএসের জন্য জিজ্ঞাসা করে।

f:=LocalTime[]
p=Print;
y:=DateString[#,"Year"]&
s:=ToString[#]<>" "&
d:=QuantityMagnitude@DateDifference[a,b]
j=StringJoin;
While[True,
  a=b;
  b=f;
  Pause@1;
  Which[d>=0,
   p@(j@@{s@a,s@b,": ",y@b, 
       "? You mean we are in the future?"}),
   d<0,
   p@(j@@{s@a,s@b," Back in good old ",y@b,"."})]];

আউটপুট

তারিখ / সময় ম্যানুয়ালি খাওয়ানোর মাধ্যমে পরীক্ষিত।

DateObject[{2015, 10, 23}, TimeObject[{18, 36, 17.9618}], TimeZone -> \
-4.] DateObject[{2015, 10, 25}, TimeObject[{18, 42, 0.264913}], \
TimeZone -> -4.] : 2015? You mean we are in the future?

DateObject[{2015, 10, 23}, TimeObject[{18, 43, 0.141572}], TimeZone -> -4.] DateObject[{2015, 10, 23}, TimeObject[{18, 42, 3.30681}], TimeZone -> -4.]  Back in good old 2015.

অবশ্যই আউটপুট আরও ভাল ফর্ম্যাট করতে পারে। এটি বর্ণিত প্রয়োজনীয়তা পূরণ করে।


আপনি শর্টকাট কেন LocalTime[]? এটি নিম্নলিখিত কোডটিতে কেবল একবার উপস্থিত হয়।
মাইকেল স্টারন

এক পর্যায়ে, আমি এটি দুটিবার ব্যবহার করছিলাম। ভাল ধরা যদিও।
জ্ঞান হারিয়ে গেছে

এটি সরান এবং আপনি তিনটি অক্ষর সংরক্ষণ করুন।
মাইকেল স্টারন

0

গ্রোভি, 244 বাইট

def s=9999,d={new Date()},y={it.year+1900},f={t,n->"$t $n: ${y(n)}? You mean we're in the future?"},p={t,n->"$t $n: Back in good old ${y(n)}."},t=d()
while(!sleep(s)){n=d()
c=n.time-t.time
println c<0?p(t,n):c>s*2?f(t,n):'Great Scott!'
t=n}

0

জাভা, 378 বাইট।

function detect()
{
int diffInDays = (int)( (newerDate.getTime() - olderDate.getTime()) 
                 / (1000 * 60 * 60 * 24) );
if(diffInDays>0) 
System.out.println(olderDate+" "+newerDate+": "+newerDate.getYear()+"? You mean we're in the future?");
else if(diffInDays<0) 
System.out.println(olderDate+" "+newerDate+": "+"Back in good old "+newerDate.getYear());
} 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.