LoginSignup
0
0

More than 5 years have passed since last update.

c++ builder XE4, 10.2 Tokyo > TDateTime > TDate型は時刻情報も保持するようだ

Last updated at Posted at 2016-07-07
動作確認
C++ Builder XE4
RAD Studio 10.2 Tokyo Update 2 (追記: 2017/12/27)
Unit1.cpp
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include <DateUtils.hpp>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    TDate procDate1 = StrToDate(L"2016/07/07");
    TDate procDate2 = StrToDateTime(L"2016/07/07 12:30:45");
}
//---------------------------------------------------------------------------

上記にてTDate型としてprocDate1とprocDate2を宣言している。
TDate型なのでTime情報は破棄されると思ったらそうではないようだ。

デバッグでそれぞれのvalueを見ると

  • procDate1: 42558
  • procDate2: 42558.521351667

procDate2 = (TDate)StrToDateTime(L"2016/07/07 12:30:45");という明示的な型変換でも同じ。

Now()の値からIncDay()で1日分を引いた値をTDate型に格納した場合、時刻情報も保持されてしまい、そのTDate型を基準とした日時処理をする時に失敗していた。

TDate型に格納する場合でも、以下に記載したような時刻情報消去が必要になるようだ。
http://qiita.com/7of9/items/ef540fa90615c4dcfb42

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0