我遇到了一个有趣的性能难题,但在我开始深入研究glibc并在左右中心输入错误之前,我只想获得可能存在的任何洞察力.
我有一个代码,在其中一个函数中执行此操作:
gettimeofday( &tv, 0);
localtime_r( &tv.tv_sec, &local_tm );
char result[25];
strftime( result, 24, "%Y-%m-%d %H:%M:%S", &local_tm);
Run Code Online (Sandbox Code Playgroud)
其余代码与此问题无关.当我用这个替换它:
gettimeofday( &tv, 0);
localtime_r( &tv.tv_sec, &local_tm );
char result[25];
snprintf(result, sizeof(result), "%04d-%02d-%02d %02d:%02d:%02d",
local_tm.tm_year+1900, local_tm.tm_mon+1,
local_tm.tm_mday, local_tm.tm_hour, local_tm.tm_min,
local_tm.tm_sec);
Run Code Online (Sandbox Code Playgroud)
平均而言,我的性能提升了20%.
有没有人碰到这个?这个操作系统特定吗?
我正在做以下转换和检查日期,但是,我不确定为什么以下日期保持验证为真.
不会%d只检查[01,31] + leading zeros?有没有更好,更准确的方法呢?
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
int main () {
struct tm tm;
char buffer [80];
char *str = "29/Jan/2012";
if (strptime (str, "%Y/%b/%d", &tm) == NULL)
exit(EXIT_FAILURE);
if (strftime (buffer,80,"%Y-%m-%d",&tm) == 0)
exit(EXIT_FAILURE);
printf("%s\n", buffer); // prints 29-01-20
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我收到了错误
undefined方法`strftime'代表"2013-03-06":String
尝试使用strftime从字符串2013-03-06正常显示日期(2013年6月3日星期日或类似的东西).
在我的index.html.erb中执行此操作的行看起来像这样
<td><%= task.duedate.strftime("%B %e, %Y") %></td>
我只是在学习Rails所以我确信它只是一个愚蠢的初学者错误,任何帮助将不胜感激.谢谢
如何将NSDate转换为NSString,使用strftime说明符格式化?
我想要一个函数,它将采用time_t参数和任意格式字符串并对其进行格式化.我想要这样的东西:
std::string GetTimeAsString(std::string formatString, time_t theTime)
{
struct tm *timeinfo;
timeinfo = localtime( &theTime);
char buffer[100];
strftime(buffer, 100, formatString.c_str(), timeinfo);
std::string result(buffer);
return result;
}
Run Code Online (Sandbox Code Playgroud)
但是我遇到的一个问题是缓冲区长度.我想做一些像formatString*4这样的缓冲区长度.但我猜你不能动态设置缓冲区长度?也许我可以挑选一个任意大的缓冲区?我有点担心如何使它成为通用的.
如何编写一个函数来实现这一目标?
我有代码:
<?php echo strftime("%Y %B %e, %A")?>
Run Code Online (Sandbox Code Playgroud)
在某些语言中我得到:
2012年junio 3,多明戈
我希望所有单词的首字母大写(大写),所以它看起来像:
2012 Junio 3,多明戈
我没有在互联网上找到任何答案,有人有想法吗?:)
我被要求为我们的计费系统编写一个模块,并使用我习惯的所有功能完成它.它是在英语设置上测试的,但我没有考虑(我也不知道)我们公司使用的实际系统是法语.
我写的代码是......
$due_date = strtotime($next_due_date);
$today = date('Y-m-d');
$today_date = strtotime($today);
if ($due_date > $today_date) {
Run Code Online (Sandbox Code Playgroud)
但是我不熟悉StrFTime,并想知道如何使用它来使这段代码适用于法语区域设置?
我正在使用strftime来显示未来的日期.
但在使用时
strftime('%a., %d. %B %Y',time()+60*60*24*4)
Run Code Online (Sandbox Code Playgroud)
我将于2013年4月1日,而不是苏,2013年3月31日,今天使用它.
(Unix时间戳是1364423120)
strftime('%a., %d. %B %Y',time()+60*60*24*3)
Run Code Online (Sandbox Code Playgroud)
显示正确的Sa.,2013年3月30日
三月的最后一天有什么问题?
>>> import time
>>> t=1440935442
>>> time.strftime("%Y/%m/%d-%H:%M:%S %z",time.gmtime(t))
'2015/08/30-11:50:42 +0000'
>>> time.strftime("%Y/%m/%d-%H:%M:%S %z",time.localtime(t))
'2015/08/30-13:50:42 +0000'
Run Code Online (Sandbox Code Playgroud)
偏移量保持不变 +0000,但我预计 '2015/08/30-13:50:42 +0200'
时区正确,因为该命令按其应有的方式解释大写 %Z
>>> time.strftime("%Y/%m/%d-%H:%M:%S %Z",time.localtime(t))
'2015/08/30-13:50:42 CEST'
Run Code Online (Sandbox Code Playgroud)
Unix 日期像我想要的那样工作
$ date -u --date @1440935442 +"%Y/%m/%d-%H:%M:%S %z"
2015/08/30-11:50:42 +0000
$ date --date @1440935442 +"%Y/%m/%d-%H:%M:%S %z"
2015/08/30-13:50:42 +0200
Run Code Online (Sandbox Code Playgroud) 我将date字段存储为自纪元以来的秒数:
对于图像中的时间戳记(1550591783-representing 2019-02-19 19:26:23),sqlite应该50在一年中的某天返回,但它会返回40。
这是查询PurchaseDao:
@Query("SELECT strftime('%j', date, 'unixepoch', 'localtime') AS day " +
"FROM purchase " +
"WHERE ...")
abstract List<Cost> getCosts();
Run Code Online (Sandbox Code Playgroud)
这是日期转换器:
public class DateConverter {
@TypeConverter
public static Date fromTimestamp(Long value) {
return value == null ? null : new Date(value * 1_000); // multiply by 1000 to make it milliseconds
}
@TypeConverter
public static Long toTimestamp(Date date) {
return date == null ? …Run Code Online (Sandbox Code Playgroud)