此代码应该在Delphi XE2中工作,但它在StrtoDateTime转换中给出"不是有效的日期和时间"错误:
procedure TForm2.Button1Click(Sender: TObject);
var
s: string;
d: TDateTime;
FmtStngs: TFormatSettings;
begin
GetLocaleFormatSettings(GetThreadLocale, FmtStngs);
FmtStngs.DateSeparator := #32;
FmtStngs.ShortDateFormat := 'dd mmm yyyy';
FmtStngs.TimeSeparator := ':';
FmtStngs.LongTimeFormat := 'hh:nn';
s := FormatDateTime('', Now, FmtStngs);
d := StrToDateTime(s, FmtStngs);
end;
Run Code Online (Sandbox Code Playgroud)
任何提示?
我想以下面的格式输入数据库的时间戳.
yyyy-mm-dd hh:mm:ss
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得以上格式?
我用的时候
$date = new Zend_Date();
Run Code Online (Sandbox Code Playgroud)
它返回 月dd,yyyy hh:mm:ss PM
我还使用JavaScript日历来插入所选日期,并以dd-mm-yyyy格式返回
现在,我想将这两种格式转换为yyyy-mm-dd hh:mm:ss,因此可以插入数据库中.由于日期格式与数据库字段格式不匹配,因此未插入日期,仅填充*00-00-00 00:00:00*
谢谢你的回答
我有一个循环,遍历我们网站上的所有新闻.其中一个字段是date ${newsitem.value['Date']},以毫秒为单位.我想在网页上以月/日/年格式显示此日期.我认为JSTL格式标签<fmt:formatDate>会有所帮助,但我还没有成功.你知道怎么做吗?
<cms:contentaccess var="newsitem" />
<h2><c:out value="${newsitem.value['Title']}" /></h2>
// display date here
<c:out value="${newsitem.value['Text']}" escapeXml="false" />
Run Code Online (Sandbox Code Playgroud) 我有一个MySQL数据库表,其中包含一个名为的列"timestamp",一个类型timestamp,以及on update CURRENT_TIMESTAMP默认值为的属性CURRENT_TIMESTAMP.
如果我向表中添加一条记录,指定其他值,而不是时间戳,则会自动添加时间戳2016-12-28 17:02:26.
在PHP中,我使用以下查询查询表
SELECT * FROM history WHERE user_id = 9 ORDER BY timestamp ASC
Run Code Online (Sandbox Code Playgroud)
查询的结果保存到$rows我使用a foreach来创建一个数组,其中一些其他值格式化.我正在尝试将时间戳格式化为英国式24小时日期时间:dd/mm/yy, HH:MM:SS.
我已经尝试了以下两个date()和strftime()函数:
$formatted_datetime = strftime("%d %m %y %H %M %S", $row["timestamp"]);
$formatted_datetime = date("d/m/y, H:i:s", $row["timestamp"]);
Run Code Online (Sandbox Code Playgroud)
这两个都导致以下通知和输出日期时间不正确,如01 01 70 00 33 36:
注意:第20行/home/ubuntu/workspace/pset7/public/history.php中遇到的格式不正确的数值
我是PHP和MySQL的新手,到目前为止我见过的所有其他问题或文档都没有成功解决过这种转换.我不明白为什么strftime()不起作用,也不知道如何正确地做到这一点?
我将格式化日期分配给<form:input>标记,但不是格式化日期,jstl代码被分配给文本字段.
<form:input path="DOB" value="<fmt:formatDate pattern='dd/MM/yyyy' value='${editableUser.DOB}'/>" />
Run Code Online (Sandbox Code Playgroud) 期望的返回值应该是格式化为的字符串dd-mm-yyyy.
我试图给ISOString一个格式日期dd-mm-yyyy并添加GMT,但代码给了我这种格式.我能怎么做?
new Date().toISOString()
.replace(/T/, ' '). // replace T with a space
.replace(/\..+/, ''); // delete the dot and everything after
Run Code Online (Sandbox Code Playgroud)
'2012-11-04 14:55:45'
我不知道为什么我无法弄清楚它是如此简单。
我试图将今天的日期以 YYYY-MM-dd 格式连接到一个字符串,但它不起作用。
我尝试过创建日期并now = Time.now.strftime("%Y-%m-%d")像这样连接它
'http://api.flurry.com/appMetrics/Sessions?apiAccessCode=########&apiKey=#########&startDate='+now+'&endDate='+now
请指教,谢谢。
编辑:如果我设置了now = '2016-11-05'那么一切都会正常。所以问题肯定在于我如何创建约会。
这是一个很长的问题,但我们走了.有一个版本的FormatDateTime,据说是您使用的线程安全
GetLocaleFormatSettings(3081, FormatSettings);
Run Code Online (Sandbox Code Playgroud)
得到一个值然后你可以像这样使用它;
FormatDateTime('yyyy', 0, FormatSettings);
Run Code Online (Sandbox Code Playgroud)
现在想象两个计时器,一个使用TTimer(间隔说1000毫秒),然后另一个计时器创建如此(10毫秒间隔);
CreateTimerQueueTimer
(
FQueueTimer,
0,
TimerCallback,
nil,
10,
10,
WT_EXECUTEINTIMERTHREAD
);
Run Code Online (Sandbox Code Playgroud)
现在是一点点,如果在回调和计时器事件中你有以下代码;
for i := 1 to 10000 do
begin
FormatDateTime('yyyy', 0, FormatSettings);
end;
Run Code Online (Sandbox Code Playgroud)
请注意,没有任务.这会产生几乎立即访问的访问权限,有时甚至会在20分钟后随机出现.现在,如果您在C++ Builder中编写该代码,它永远不会崩溃.我们使用的标头转换是JEDI JwaXXXX.即使我们在代码中放入Delphi版本的锁,它也只会延迟不可避免的.我们已经查看了原始的C头文件,它看起来都很好,C++使用Delphi运行时有什么不同的方式吗?FormatDatTime的线程安全版本看起来是可重入的.任何可能以前看过这个的人的想法或想法.
更新:
为了缩小这一点,FormatSettings作为const传入,所以如果它们使用相同的副本(因为事实证明在函数调用中传递本地版本会产生同样的问题)是否重要?采用FormatSettings的FormatDateTime版本也不会调用GetThreadLocale,因为它已经具有FormatSettings结构中的Locale信息(我通过单步执行代码仔细检查).
我提到没有任何分配,以明确没有访问共享存储,因此不需要锁定.
WT_EXECUTEINTIMERTHREAD用于简化问题.我的印象是你应该只将它用于非常短的任务,因为它可能意味着如果它运行的时间很长,它会错过下一个间隔吗?
如果使用普通的旧TThread,则不会出现问题.我在这里得到的是我认为使用TThread或TTimer可以工作,但是使用在VCL外部创建的线程没有,这就是为什么我问C++ Builder使用VCL/Delphi RTL的方式是否存在差异.
顺便说一句,前面提到的代码也会失败(但需要更长时间),过了一会儿,CS:= TCriticalSection.Create;
CS.Acquire;
for i := 1 to LoopCount do
begin
FormatDateTime('yyyy', 0, FormatSettings);
end;
CS.Release;
Run Code Online (Sandbox Code Playgroud)
现在我真的不明白,我按照建议写了这个;
function ReturnAString: string;
begin
Result := 'Test';
UniqueString(Result);
end;
Run Code Online (Sandbox Code Playgroud)
然后在每种类型的计时器内部代码;
for i := 1 to 10000 do
begin
ReturnAString;
end;
Run Code Online (Sandbox Code Playgroud)
这会导致相同类型的故障,正如我之前所说,故障永远不会出现在CPU窗口内的同一位置等.有时它是一种访问冲突,有时它可能是一个无效的指针操作.我正在使用Delphi 2009 …
我正在使用Delphi 2007.
我需要编写一个FormatDateTime函数,它始终将01/01 /返回到TDateEdit框(DevExpress组件)作为EditValue.
我已经尝试过......
tcxDateEdit1.EditValue := FormatDateTime('01/01/'+ 'yyyy',now);
Run Code Online (Sandbox Code Playgroud)
和
tcxDateEdit1.EditValue := FormatDateTime('01/01/yyyy',Now);
Run Code Online (Sandbox Code Playgroud)
但他们都没有工作.它导致将string类型的变量转换为double的错误."无法将类型(String)的变体转换为类型(Double)"
我试过
update(['access' => Carbon::now()->format('Y/m/d H:i:s')]);
Run Code Online (Sandbox Code Playgroud)
它回来了 Y-m-d H:i:s
formatdatetime ×10
date ×4
delphi ×3
php ×3
datetime ×2
jstl ×2
delphi-2007 ×1
delphi-xe2 ×1
javascript ×1
jsp ×1
laravel ×1
mysql ×1
tdatetime ×1
timestamp ×1
winapi ×1
zend-date ×1