$w = strftime("%W",mktime(0,0,0,1,1,2011));
echo $w;
Run Code Online (Sandbox Code Playgroud)
返回"00"
为什么?
我试图以我想要的格式将日期转换为时间,并且它会产生意外的输出.
struct tm dateTime = {0};
char buffer[80]= {0};
dateTime.tm_year = 2014;
dateTime.tm_mon = 4;
dateTime.tm_mday =17;
strftime(buffer, _countof(buffer), "%d-%b-%Y", &dateTime);
Run Code Online (Sandbox Code Playgroud)
我希望看到,17-May-2014但我看到了17-May-3914.
我觉得我可能会遗漏一些东西,但我无法弄清楚是什么.有任何想法吗?
I\xc2\xb4ve 编写了以下函数,该函数接收时间点并返回带毫秒的 ISO 字符串:
\n\nstd::string TimePointToISOString(const std::chrono::time_point<std::chrono::system_clock>& time)\n {\n std::time_t rawTime = std::chrono::system_clock::to_time_t(time);\n struct tm timeinfo;\n localtime_s(&timeinfo, &rawTime);\n\n std::chrono::milliseconds ms = std::chrono::duration_cast<std::chrono::milliseconds>(time.time_since_epoch());\n std::size_t frac_seconds = ms.count() % 1000;\n\n char buffer[32];\n std::strftime(buffer, 32, "%FT%TZ", &timeinfo);\n\n std::string bufferStr(buffer);\n std::stringstream ss;\n ss << bufferStr.substr(0, 19) << "." << std::setw(3) << std::setfill (\'0\') << frac_seconds << bufferStr.substr(20);\n\n return ss.str();\n }\nRun Code Online (Sandbox Code Playgroud)\n\n我\xc2\xb4ve曾经在Linux上运行它,其localtime()功能完全没有问题。现在我正在迁移到 Windows/VS2012,编译器建议更改localtime()为更安全的版本localtime_s(),立即完成。
转换后,strftime调用在运行时崩溃并出现以下错误:
Expression: ("Invalid format directive", 0)\nRun Code Online (Sandbox Code Playgroud)\n\n编译运行良好。感谢帮助找出\xc2\xb4s 这里发生了什么。我想有些简单的事情我可以\xc2\xb4t注意到......
\n有一个 pandas 数据框 df,为了从日期列中获取工作日,我做了:
df_raw['DayOfWeek'] = df_raw[str_date_colname].dt.strftime('%w')
Run Code Online (Sandbox Code Playgroud)
它以十进制数形式返回工作日,其中 0 表示星期日,6 表示星期六。但是,我想得到 0 是星期一,6 是星期日。所以我做了:
df_raw['DayOfWeek'] = df_raw[str_date_colname].dt.weekday()
Run Code Online (Sandbox Code Playgroud)
但它返回:'Series' object is not callable
我可以知道为什么吗?我认为 和strftime()都weekday()可以在日期时间对象中调用:https ://docs.python.org/2/library/datetime.html
这是我正在运行的命令及其错误:
# git log --pretty=format:"%ad" --date=format-local:"%y-%m-%d %k:%M"
fatal: unknown date format format-local:%y-%m-%d %k:%M
Run Code Online (Sandbox Code Playgroud)
相同的命令在其他机器上运行良好。我在 ubuntu docker 容器中遇到了这个错误。其他格式抛出相同的错误:
# git log --pretty=format:"%ad" --date=format-local:"%M"
fatal: unknown date format format-local:%M
# git log --pretty=format:"%ad" --date=format-local:"%m"
fatal: unknown date format format-local:%m
# git log --pretty=format:"%ad" --date=format:"%m"
fatal: unknown date format format:%m
Run Code Online (Sandbox Code Playgroud)
似乎我缺少一个不属于 docker 映像的日期格式依赖项。
编辑:我正在使用 git 版本 1.9.1。
我有一些从 JIRA API 动态输入的创建和更新的日期时间,用于自动化过程,使用 python 脚本每月获取 JIRA 票证加载到 Excel 工作表中。
一些样本日期如下:
我想以 %d-%b-%Y 之类的格式呈现(例如:2017 年 2 月 9 日)
我尝试过使用 pythondatetime.strptime和strftime.
示例代码如下:
from datetime import datetime
datetimeObj = datetime.strptime('2017-02-09T09:43:04.216+1000', '%Y-%m-%dT%H:%M:%S.%f+1000')
print(datetimeObj.strftime('%d-%b-%Y'))
Run Code Online (Sandbox Code Playgroud)
这给了我预期的结果,但现在我已经硬编码了我想要的日期等值以及我添加的日期时间格式,+1000但由于它动态更改日期时间,当日期时间以诸如+1100.
我相信最后一部分与夏令时有关,但在这种情况下我无法找到正确的格式。
无论如何,有没有办法转换最后+1000一个+1100部分的日期时间格式,而不是像'%Y-%m-%dT%H:%M:%S.%f+1000'这样进行硬编码?
我正在编写 Perl 脚本 signature.pl 来构建 PDF 字典和签名字典对象 这在变量中声明了 PEM 和 PDF。我已经将 POSIX 用于 strftime
use strict;
use warnings;
use PDF::API2;
use PDF::API2::Basic::PDF::Utils;
use File::Slurp;
use POSIX;
use Crypt::OpenSSL::RSA;
use Crypt::OpenSSL::X509 qw/FORMAT_UNDEF FORMAT_ASN1 FORMAT_TEXT FORMAT_PEM/;
use Digest::SHA1 qw(sha1 sha1_hex);
my $add_mdp = 0;
my $input_filename = "signature.pdf";
my $tempfilename = 'tmp.pdf';
my $outfilename = 'tmp.pdf';
my $sig_algorithm = 'pkcs7';
my $sig_length = 20480;
my $cacert_filename = "signature.pem";
my $x509_filename = "signature.pem";
my $priv_key_filename = "signature.pem";
my $cacert = Crypt::OpenSSL::X509->new_from_file($cacert_filename);
my $x509 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 ffmpeg 自动标记输出文件的时间戳。这是我的测试命令:
.\ffmpeg.exe -y -loglevel 99 -i test.mp3 -strftime 1 %Y.ogg
Run Code Online (Sandbox Code Playgroud)
我期望一个名为 的文件2020.ogg,但只得到了%Y.ogg. 换句话说,输出文件名不被strftime(). 我使用的是powershell,所以应该与cmd的%%转义没有关系。
这是输出:https: //pastebin.com/LUVh2kFA我正在使用https://ffmpeg.zeranoe.com的静态构建(感谢 Zeranoe!)我确认 v4.2.2 和 git-20200515 中存在问题。有机会修复它还是我做错了?
我正在尝试实现这种风格的输出:
Time.new(2021,9,19,6,0,0) => "6am"
Time.new(2021,9,19,6,30,0) => "6:30am"
Run Code Online (Sandbox Code Playgroud)
我得到的最接近的是strftime('%l:%-M%P'):
Time.new(2021,9,19,6,0,0).strftime('%-l:%-M%P') => "6:0am"
Time.new(2021,9,19,6,30,0).strftime('%-l:%-M%P') => "6:30am"
Run Code Online (Sandbox Code Playgroud)
是否有已知的方法来抑制%M或%-M当为零时,或者我需要在这里做我自己的事情?
是不是更混乱?不应该是相反的方式,所以它更容易记住?