ホーム › Foundation › SYSTEMTIME
SYSTEMTIME
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| wYear | WORD | 2 | +0 | +0 | 年。このメンバーの有効な値は 1601 から 30827 です。 | ||||||||||||||||||||||||||
| wMonth | WORD | 2 | +2 | +2 | 月。このメンバーには次のいずれかの値を指定できます。
| ||||||||||||||||||||||||||
| wDayOfWeek | WORD | 2 | +4 | +4 | 曜日。このメンバーには次のいずれかの値を指定できます。
| ||||||||||||||||||||||||||
| wDay | WORD | 2 | +6 | +6 | 月の中の日。このメンバーの有効な値は 1 から 31 です。 | ||||||||||||||||||||||||||
| wHour | WORD | 2 | +8 | +8 | 時。このメンバーの有効な値は 0 から 23 です。 | ||||||||||||||||||||||||||
| wMinute | WORD | 2 | +10 | +10 | 分。このメンバーの有効な値は 0 から 59 です。 | ||||||||||||||||||||||||||
| wSecond | WORD | 2 | +12 | +12 | 秒。このメンバーの有効な値は 0 から 59 です。 | ||||||||||||||||||||||||||
| wMilliseconds | WORD | 2 | +14 | +14 | ミリ秒。このメンバーの有効な値は 0 から 999 です。 |
公式ドキュメント
月、日、年、曜日、時、分、秒、ミリ秒をそれぞれ個別のメンバーで表して、日付と時刻を指定します。時刻は、呼び出される関数に応じて、協定世界時 (UTC) またはローカル時刻のいずれかになります。
解説(Remarks)
メモ
SYSTEMTIME は、表現されている日付が実在する有効な日付かどうかをチェックしません。この API を使用する際は、特にうるう年のシナリオにおいて、その妥当性を確認してください。詳細については、leap day readiness を参照してください。
相対的な時刻を求めるために SYSTEMTIME 構造体の値を加算・減算することは推奨されません。代わりに、次の手順を実行してください。
- SYSTEMTIME 構造体を FILETIME 構造体に変換します。
- 変換された FILETIME 構造体を ULARGE_INTEGER 構造体にコピーします。
- ULARGE_INTEGER の値に対して通常の 64 ビット演算を使用します。
例
次の例は、GetSystemTime 関数と GetLocalTime 関数で取得される時刻の値の違いを示しています。
#include <windows.h>
#include <stdio.h>
void main()
{
SYSTEMTIME st, lt;
GetSystemTime(&st);
GetLocalTime(<);
printf("The system time is: %02d:%02d\n", st.wHour, st.wMinute);
printf(" The local time is: %02d:%02d\n", lt.wHour, lt.wMinute);
}
// Sample output
The system time is: 19:34
The local time is: 12:34
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#include <windows.h>
// SYSTEMTIME (x64 16 / x86 16 バイト)
typedef struct SYSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct SYSTEMTIME
{
public ushort wYear;
public ushort wMonth;
public ushort wDayOfWeek;
public ushort wDay;
public ushort wHour;
public ushort wMinute;
public ushort wSecond;
public ushort wMilliseconds;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure SYSTEMTIME
Public wYear As UShort
Public wMonth As UShort
Public wDayOfWeek As UShort
Public wDay As UShort
Public wHour As UShort
Public wMinute As UShort
Public wSecond As UShort
Public wMilliseconds As UShort
End Structureimport ctypes
from ctypes import wintypes
class SYSTEMTIME(ctypes.Structure):
_fields_ = [
("wYear", ctypes.c_ushort),
("wMonth", ctypes.c_ushort),
("wDayOfWeek", ctypes.c_ushort),
("wDay", ctypes.c_ushort),
("wHour", ctypes.c_ushort),
("wMinute", ctypes.c_ushort),
("wSecond", ctypes.c_ushort),
("wMilliseconds", ctypes.c_ushort),
]#[repr(C)]
pub struct SYSTEMTIME {
pub wYear: u16,
pub wMonth: u16,
pub wDayOfWeek: u16,
pub wDay: u16,
pub wHour: u16,
pub wMinute: u16,
pub wSecond: u16,
pub wMilliseconds: u16,
}import "golang.org/x/sys/windows"
type SYSTEMTIME struct {
wYear uint16
wMonth uint16
wDayOfWeek uint16
wDay uint16
wHour uint16
wMinute uint16
wSecond uint16
wMilliseconds uint16
}type
SYSTEMTIME = record
wYear: Word;
wMonth: Word;
wDayOfWeek: Word;
wDay: Word;
wHour: Word;
wMinute: Word;
wSecond: Word;
wMilliseconds: Word;
end;const SYSTEMTIME = extern struct {
wYear: u16,
wMonth: u16,
wDayOfWeek: u16,
wDay: u16,
wHour: u16,
wMinute: u16,
wSecond: u16,
wMilliseconds: u16,
};type
SYSTEMTIME {.bycopy.} = object
wYear: uint16
wMonth: uint16
wDayOfWeek: uint16
wDay: uint16
wHour: uint16
wMinute: uint16
wSecond: uint16
wMilliseconds: uint16struct SYSTEMTIME
{
ushort wYear;
ushort wMonth;
ushort wDayOfWeek;
ushort wDay;
ushort wHour;
ushort wMinute;
ushort wSecond;
ushort wMilliseconds;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; SYSTEMTIME サイズ: 16 バイト(x64)
dim st, 4 ; 4byte整数×4(構造体サイズ 16 / 4 切り上げ)
; wYear : WORD (+0, 2byte) wpoke st,0,値 / 値 = wpeek(st,0)
; wMonth : WORD (+2, 2byte) wpoke st,2,値 / 値 = wpeek(st,2)
; wDayOfWeek : WORD (+4, 2byte) wpoke st,4,値 / 値 = wpeek(st,4)
; wDay : WORD (+6, 2byte) wpoke st,6,値 / 値 = wpeek(st,6)
; wHour : WORD (+8, 2byte) wpoke st,8,値 / 値 = wpeek(st,8)
; wMinute : WORD (+10, 2byte) wpoke st,10,値 / 値 = wpeek(st,10)
; wSecond : WORD (+12, 2byte) wpoke st,12,値 / 値 = wpeek(st,12)
; wMilliseconds : WORD (+14, 2byte) wpoke st,14,値 / 値 = wpeek(st,14)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global SYSTEMTIME
#field short wYear
#field short wMonth
#field short wDayOfWeek
#field short wDay
#field short wHour
#field short wMinute
#field short wSecond
#field short wMilliseconds
#endstruct
stdim st, SYSTEMTIME ; NSTRUCT 変数を確保
st->wYear = 100
mes "wYear=" + st->wYear