我尝试了很多方法,但是月份的字符串格式让我很困难.任何建议,建议或实现的代码都会有所帮助.
这是我的问题的简化版本,但这里是它的要点:我有一个脚本,通过使用Regex查找特定模式来对电子邮件进行排序.我排序的其中一项是收到电子邮件的日期.我使用datetime模块格式化日期字符串,如下所示:
s1 = datetime.strptime(regex_obtained_str, '%B %d, %Y, %I:%M:%S %p').strftime('%m/%d/%Y %I:%M:%S %p')
Run Code Online (Sandbox Code Playgroud)
现在,假设我已经解析了4封电子邮件,这些是来自Regex函数的结果:
s1 = 'March 15, 2013 8:58:34 PM'
s2 = 'March 15, 2013 11:10:10 AM'
s3 = 'March 15, 2013 11:16:06 AM'
s4 = 'April 15, 2013 12:02:04 PM'
Run Code Online (Sandbox Code Playgroud)
在strftime格式化之后变成了这个:
s1 = '03/15/2013 08:58:34 PM'
s2 = '03/15/2013 11:10:10 AM'
s3 = '03/15/2013 11:16:06 AM'
s4 = '04/15/2013 12:02:04 PM'
Run Code Online (Sandbox Code Playgroud)
如果我以随机顺序将这些全部放在列表中并执行sort()函数,如下所示:
L = [s2, s1, s3, s4]
L.sort()
Run Code Online (Sandbox Code Playgroud)
输出是:
['03/15/2013 08:58:34 PM', '03/15/2013 11:10:10 AM', '03/15/2013 11:16:06 AM', '04/15/2013 …Run Code Online (Sandbox Code Playgroud) 我有一些代码如下所示,但时区%Z返回:格林威治标准时间夏令时01:04:48
我需要它返回:格林威治标准时间01:04:48
import time
timenew = time.strftime('%H:%M:%S %Z')
print timenew
Run Code Online (Sandbox Code Playgroud)
任何人都知道如何修复/这样做?
我需要从字符串中减去5个小时 "03:40"
我尝试过以下方法:
import datetime
timevar = "03:40"
newtime = datetime.datetime.date.strftime("%H:%M", timevar)
newtime = newtime - datetime.timedelta(hours=5)
print newtime
Run Code Online (Sandbox Code Playgroud)
我已经阅读了datetime文档,但我仍然无法看到我做错了什么.
任何帮助非常感谢.
- Hyflex
以下程序不适用于我的Raspberry Pi.strftime()返回0并且未设置变量.这个确切的代码在AS/400上编译并运行良好.有趣,但红帽也有问题.我得到的输出是400
currentTime=1430852224
tm=SPP:0000 :1aefQP0ZSPWT BEAK 093275 :8840:0:13
tm->year=115
tm->mon=4
tm->mday=5
tm->tm_hour=18
tm->tm_min=57
tm->tm_sec=4
i=20, ctimeStr=2015-05-05T18:57:04Z
i=13, ctimeStr=2015 18:57:04
timeStr=2015 18:57:04
Run Code Online (Sandbox Code Playgroud)
在覆盆子上:
currentTime=1430852359
tm=0xb6dd9264
tm->year=115
tm->mon=4
tm->mday=5
tm->tm_hour=18
tm->tm_min=59
tm->tm_sec=19
i=0, ctimeStr=
i=0, ctimeStr=
timeStr=
Run Code Online (Sandbox Code Playgroud)
我可能正盯着我的问题,但我没有看到它.
#include <iostream>
#include <string>
#include <string.h>
#include <sstream>
#include <iomanip>
#include <time.h>
using namespace std;
static void GetUTCTimeStr(string& timeStr)
{
time_t currentTime;
struct tm *tm;
currentTime = time(0);
cout << "currentTime=" << currentTime << endl;
tm = gmtime(¤tTime);
cout << "tm=" << tm << …Run Code Online (Sandbox Code Playgroud) 格式化日期为:
dob = datetime(0000, 00, 00)
dob = dob.strftime("%Y-%m-%d")
Run Code Online (Sandbox Code Playgroud)
但它给出了错误: ValueError: year is out of range
我如何在python中datetime(0000,00,00)使用格式化strftime()?
我正在创建网络抓取工具,但遇到了一个问题,其中网站给我的日期格式为“ 1991年1月1日,星期一”
将其格式化为“ MM-DD-YYYY”格式的最佳方法是什么?我应该分割逗号,取出月份并将其转换为数字,然后将数字放在一起吗?还是有一些更快的方法来做到这一点?
我设法得到日期
import datetime
getDate = datetime.date.today()
print(getDate.strftime("%Y-%B-%d"))
Run Code Online (Sandbox Code Playgroud)
输出是 2018-June-23
但我想这样格式化输出:(2018-JUNE-23月份为大写)
我正在阅读strftime(3)的手册页,我发现了这个:
%b根据当前语言环境的缩写月份名称。(从 计算tm_mon。)[...]
%h相当于%b。(苏)
两者完全一样还是有什么区别?是否有一种特殊情况应该优先于另一个?
我从这里学习C语言中与时间相关的函数.他们使用以下示例演示了strftime()函数:
#include <stdio.h>
#include <time.h>
#define LEN 150
int main ()
{
char buf[LEN];
time_t curtime;
struct tm *loc_time;
//Getting current time of system
curtime = time (NULL);
// Converting current time to local time
loc_time = localtime (&curtime);
// Displaying date and time in standard format
printf("%s", asctime (loc_time));
strftime (buf, LEN, "Today is %A, %b %d.\n", loc_time);
fputs (buf, stdout);
strftime (buf, LEN, "Time is %I:%M %p.\n", loc_time);
fputs (buf, stdout);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我对printf()中的%m说明符进行了调整.它说%m转换说明符不是C,而是printf的GNU扩展.'%m'转换在errno中打印对应于错误代码的字符串.
我知道格式说明符%是C99中的新内容.它以十六进制形式打印浮点数. …
在strftime 中 %b是月份名称
>>> '{:%b}'.format(datetime.now())
'Apr'
Run Code Online (Sandbox Code Playgroud)
我可以使用chinese-hat修饰符carrot thing将它大写
>>> '{:%^b}'.format(datetime.now())
'APR'
Run Code Online (Sandbox Code Playgroud)
我如何小写它?即获得结果'{:%b}'.format(dt).lower(),但使用模板而不是后处理步骤。