Python 是否编写函数以使用时间显示当前日期?

Python 是否编写函数以使用时间显示当前日期?,python,time,time-t,Python,Time,Time T,我一直在编写一个时间转换器来获取系统时间,并将其转换为人类可读的日期/时间。哦,这是我的第二个python脚本。我们将把这个事实放在一边,继续前进 完整的脚本是托管的 为年度和月度编写转换器是相当容易的,但为了让这一天正常工作,我遇到了严重的困难。正如你所看到的,从1970年到今天,我一直试图用暴力来对付我。不幸的是,结果是-105 有人知道更好的方法吗,或者有人知道如何解决我在这里尝试的问题吗?现在是凌晨3:30,所以我很可能错过了一些明显的东西 抱歉,我忘了注意到我是为了学习python而手

我一直在编写一个时间转换器来获取系统时间,并将其转换为人类可读的日期/时间。哦,这是我的第二个python脚本。我们将把这个事实放在一边,继续前进

完整的脚本是托管的

为年度和月度编写转换器是相当容易的,但为了让这一天正常工作,我遇到了严重的困难。正如你所看到的,从1970年到今天,我一直试图用暴力来对付我。不幸的是,结果是-105

有人知道更好的方法吗,或者有人知道如何解决我在这里尝试的问题吗?现在是凌晨3:30,所以我很可能错过了一些明显的东西


抱歉,我忘了注意到我是为了学习python而手动执行此操作的。不幸的是,通过日期函数执行此操作无法达到目的。

您可以使用以下两种方法之一执行此操作:

或与:


您可以使用以下两种方法之一:

或与:

为什么不使用:

from datetime import datetime
the_date = datetime.fromtimestamp(the_time)
print(the_date.strftime('%Y %B %d'))
datetime模块处理所有边缘情况——闰年、闰秒、闰日——以及时区转换(带有可选的第二个参数)

为什么不使用:

from datetime import datetime
the_date = datetime.fromtimestamp(the_time)
print(the_date.strftime('%Y %B %d'))
datetime模块处理所有边缘情况——闰年、闰秒、闰日——以及时区转换(带有可选的第二个参数)

(我假设您这样做是为了学习Python,所以我将指出代码中的错误)

诺诺诺。你不能那样做。有些年份有31536000秒,有些年份有31622400秒

>>> if calendar.isleap(yeariterator) == True:
您不需要测试真值是否为真。:-)做:

相反

也改变了:

>>> yeariterator = 1969
>>> iterator = 0
>>> while yeariterator < yearsfordayfunction:
>>>     yeariterator = yeariterator + 1
8个空格的缩进量很大。4更常见

另外,我会用一种方法计算年份和日期,而不是两次

def YearDay():
    SecondsSinceEpoch = int(time.time())
    days = SecondsSinceEpoch // 86400 # Double slash means floored int.
    year = 1970
    while True:
            if calendar.isleap(year):
                    days -= 366
            else:
                    days -= 365
            year += 1
            if calendar.isleap(year):
                    if days <= 366:
                            return year, days
            else:
                    if days <= 365:
                            return year, days


def MonthDay(year, day):
    if calendar.isleap(year):
            monthstarts = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366]
    else:
            monthstarts = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365]

    month = 0
    for start in monthstarts:
            if start > day:
                    return month, day - monthstarts[month-1] + 1
            month += 1
def YearDay():
SecondsSinceEpoch=int(time.time())
天=秒纪元//86400#双斜杠表示下限整数。
年份=1970年
尽管如此:
如果calendar.isleap(年):
天数-=366天
其他:
天数-=365天
年份+=1
如果calendar.isleap(年):
if days(我假设您这样做是为了学习Python,所以我将指出代码中的错误)

诺诺诺。你不能那样做。有些年份有31536000秒,有些年份有31622400秒

>>> if calendar.isleap(yeariterator) == True:
您不需要测试真值是否为真。:-)做:

相反

也改变了:

>>> yeariterator = 1969
>>> iterator = 0
>>> while yeariterator < yearsfordayfunction:
>>>     yeariterator = yeariterator + 1
8个空格的缩进量很大。4更常见

另外,我会用一种方法计算年份和日期,而不是两次

def YearDay():
    SecondsSinceEpoch = int(time.time())
    days = SecondsSinceEpoch // 86400 # Double slash means floored int.
    year = 1970
    while True:
            if calendar.isleap(year):
                    days -= 366
            else:
                    days -= 365
            year += 1
            if calendar.isleap(year):
                    if days <= 366:
                            return year, days
            else:
                    if days <= 365:
                            return year, days


def MonthDay(year, day):
    if calendar.isleap(year):
            monthstarts = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366]
    else:
            monthstarts = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365]

    month = 0
    for start in monthstarts:
            if start > day:
                    return month, day - monthstarts[month-1] + 1
            month += 1
def YearDay():
SecondsSinceEpoch=int(time.time())
天=秒纪元//86400#双斜杠表示下限整数。
年份=1970年
尽管如此:
如果calendar.isleap(年):
天数-=366天
其他:
天数-=365天
年份+=1
如果calendar.isleap(年):

如果天我还将指出您发布的代码中的一些奇怪之处:

    try:
            SecondsSinceEpoch = time.time()
    except IOError:
            Print("Unable to get your system time!")
1.)为什么
time.time()
会引发IOError?据我所知,该函数不可能引发错误,它应该始终返回一个值

2.
Print
应该是
Print


3.)即使
time.time
确实引发了
IOError
异常,您也在吞咽异常,这可能是您不想做的。下一行需要定义
SecondsSinceEpoch
,这样只会引发另一个(更令人困惑的)异常。

我还将指出您发布的代码中的一些奇怪之处:

    try:
            SecondsSinceEpoch = time.time()
    except IOError:
            Print("Unable to get your system time!")
1.)为什么
time.time()
会引发IOError?据我所知,该函数不可能引发错误,它应该始终返回一个值

2.
Print
应该是
Print


3.)即使
time.time
确实引发了
IOError
异常,您也在吞咽异常,这可能是您不想做的。下一行需要定义
SecondsSinceEpoch
,这样只会引发另一个(更令人困惑的)异常。

您这样做(手动)只是为了学习Python吗?否则,您可以使用内置的时间格式化函数:time.strftime是的,我应该提到这一点,对不起。我认为在其中编写C不会学到多少Python。这是值得思考的。你用这种(手动)方式只是为了学习Python吗?否则,您可以使用内置的时间格式化函数:time.strftime是的,我应该提到这一点,对不起。我认为在其中编写C不会学到多少Python。值得思考。将print更改为print()--print是Python 3中的一个函数虽然这是我问题的“正确”答案,但我这样做并不是为了制作一个工作时钟!我这样做是为了学习python,所以像这样的快捷方式函数不符合本练习的目的。谢谢你的回答!学习Python的乐趣之一就是学习不需要自己实现的东西!标准库相当全面,PyPi提供了许多第三方模块。可能还想签出已更改的print to print()--print是Python 3中的一个函数虽然这是对我的问题的“正确”答案,但我这样做并不是为了制作一个工作时钟!我这样做是为了学习python,所以像这样的快捷方式函数不符合本练习的目的。谢谢你的回答!学习Python的乐趣之一就是学习不需要自己实现的东西!标准库相当全面,PyPi提供了许多第三方模块。可能还想退房谢谢,这正是我要找的!但有几点我不确定:1。GetDays()函数实际上应该获取当月的日期:(我最初让它在
days之前的几个月内迭代不,缩进大小无关紧要,但我认为它在4个空格处更具可读性。