你喜欢吃午饭。然而,你在节食,并希望确保你不会意外地在一天内吃两次午餐。所以你需要做一个程序来帮助你确保。
然而,一个复杂的问题是,你在一个非常奇怪的时间表上吃午餐。您吃午餐的时间是月:日PM (您可以使用UTC或本地化时区)。对,如果是7月14日,你晚上7点14分吃午饭
对于您的程序,您需要使用当前的日期和时间(不要接受输入),如果您已经一天吃过午餐(或者现在是午餐时间),则输出一致的真实值;如果没有,则输出一致的虚假值。
示例:(运行程序=>输出的时间)
发布于 2017-07-14 20:28:23
import Foundation;var n=String(describing:Date());var k=n.startIndex;print(Int(n[n.index(k,offsetBy:5)...n.index(k,offsetBy:6)])!*60+Int(n[n.index(k,offsetBy:8)...n.index(k,offsetBy:9)])!+720<=Int(n[n.index(k,offsetBy:11)...n.index(k,offsetBy:12)])!*60+Int(n[n.index(k,offsetBy:14)...n.index(k,offsetBy:15)])!)看看这个!
这打印true和false,分别为真实和虚假。
注意:这只适用于9999年,晚上11:59:59,因为它使用String来比较日期。
发布于 2017-07-14 21:09:31
diff(str2num([(d=datestr(now,'mmddHHMM'))(1:4);d(5:8)]))>1200第一,职能:
now()返回十进制格式的时间。括号是可选的。datestr根据第二个参数中给出的格式将十进制数转换为字符串。str2num将字符串转换为数字diff取两个数字之间的差额我们从中间取出来:
diff(str2num([(d=datestr(now,'mmddHHMM'))(1:4);d(5:8)]))>1200datestr(now,'mmddHHMM'):首先,我们将当前时间now作为datestr的输入,并指定mmddHHMM格式。字母的意思是:mm = month、dd = day、HH = hour、MM = minutes和AM,指定时间应该是12小时格式。不包括分离器,以保持它尽可能短。在编写此说明时,它将输出d = 07142117。从现在起,我将把这部分称为x。
[(d=x)(1:4);d(5:8)]:将上面的字符串存储为d,然后创建一个包含两个元素的数组,前四个字符,然后是5-9个字符。这个给出:
ans =
0714
2122其中数字存储为字符串,而不是数字。我们将对下面的y调用上面的结果。
str2num(y)将字符数组转换为数字,其中每行转换为一个数字。这给了[714; 2122]。我们将为z调用结果。
diff(z)>1200获取两个数字之间的差额,并检查当前时间是否比当前日期高1200。这说明了AM/PM。这给了我们想要的结果。
发布于 2017-07-14 21:48:05
using System;public class Program{public static void Main(){Console.WriteLine(DateTime.Now>DateTime.Today.AddHours(DateTime.Today.Month+12).AddMinutes(DateTime.Today.Day));}}https://codegolf.stackexchange.com/questions/132477
复制相似问题