068_日期

1. 创建Date对象

1.1. Date对象由新的Date()构造函数创建。

1.2. 有4种方法创建新的日期对象:

  • new Date()
  • new Date(year, month, day, hours, minutes, seconds, milliseconds)
  • new Date(milliseconds)
  • new Date(date string)

2. new Date()

2.1. new Date()用当前日期和时间创建新的日期对象:

var d = new Date();

3. new Date(year, month, day, hours, minutes, seconds, milliseconds)

3.1. new Date(year, month, day, hours, minutes, seconds, milliseconds)用指定日期和时间创建新的日期对象。

3.2. 7个参数分别指定年、月、日、小时、分钟、秒和毫秒(按此顺序)。

3.3. 6个参数指定年、月、日、小时、分钟、秒。

3.4. 5个参数指定年、月、日、小时和分钟。

3.5. 4个参数指定年、月、日和小时。

3.6. 3个参数指定年、月和日。

3.7. 2个参数指定年份和月份。

3.8. 您不能省略月份。如果只提供一个参数, 则将其视为毫秒。

3.9. JavaScript从0到11计算月份。一月是0, 十二月是11。

3.10. 实例

var d1 = new Date(2020, 11, 24, 10, 33, 30, 500);
var d2 = new Date(2020, 11, 24, 10, 33, 30);
var d3 = new Date(2020, 11, 24, 10, 33);
var d4 = new Date(2020, 11, 24, 10);
var d5 = new Date(2020, 11, 24);
var d6 = new Date(2020, 11);
var d7 = new Date(2020);

4. 上个世纪

4.1. 一位和两位数年份将被解释为19xx年:

var d = new Date(99, 11, 24);
var d = new Date(9, 11, 24);

5. new Date(dateString)

5.1. new Date(dateString)从日期字符串创建一个新的日期对象:

var d = new Date("October 13, 2014 11:13:00");

6. JavaScript 将日期存储为毫秒

6.1. JavaScript将日期存储为自1970年1月1日 00:00:00 UTC(协调世界时)以来的毫秒数。

7. new Date(milliseconds)

7.1. new Date(milliseconds)创建一个零时加毫秒的新日期对象:

var d = new Date(0);

7.2. 1970年1月1日加上86400000毫秒, 大约是1970年1月2日:

var d = new Date(86400000);

7.3. 1970年1月1日减去86400000毫秒大约是1969年12月31日:

var d = new Date(-86400000);

7.4. 一天(24小时)是86400000毫秒。

8. 例子

8.1. 代码

<!DOCTYPE html>
<html lang="zh-cn">
	<head>
		<meta charset="utf-8" />
		<title>Date对象</title>
	</head>
	<body>
		<script type="text/javascript">
			var d1 = new Date();
			var d2 = new Date(2020, 11, 24, 10, 33, 30, 500);
			var d3 = new Date(2020, 11, 24, 10, 33, 30);
			var d4 = new Date(2020, 11, 24, 10, 33);
			var d5 = new Date(2020, 11, 24, 10);
			var d6 = new Date(2020, 11, 24);
			var d7 = new Date(2020, 11);
			var d8 = new Date(2020);
			var d9 = new Date(99, 11, 24);
			var d10 = new Date(9, 11, 24);
			var d11 = new Date("October 13, 2020 11:13:00");
			var d12 = new Date(0);
			var d13 = new Date(86400000);
			var d14 = new Date(-86400000);
			document.write('d1 = ' + d1 + '<br />');
			document.write('d2 = ' + d2 + '<br />');
			document.write('d3 = ' + d3 + '<br />');
			document.write('d4 = ' + d4 + '<br />');
			document.write('d5 = ' + d5 + '<br />');
			document.write('d6 = ' + d6 + '<br />');
			document.write('d7 = ' + d7 + '<br />');
			document.write('d8 = ' + d8 + '<br />');
			document.write('d9 = ' + d9 + '<br />');
			document.write('d10 = ' + d10 + '<br />');
			document.write('d11 = ' + d11 + '<br />');
			document.write('d12 = ' + d12 + '<br />');
			document.write('d13 = ' + d13 + '<br />');
			document.write('d14 = ' + d14 + '<br />');
		</script>
	</body>
</html>

8.2. 效果图

9. 世界时

9.1. 格林尼治平太阳时间, 是指格林尼治所在地的标准时间, 也是表示地球自转速率的一种形式。

9.2. 事实上, 表达"世界时"是不明确的(当需要少于几秒的准确性时), 因为它有几个版本, 最常用的是协调世界时间(UTC)和UT1。

9.3. UTC, 协调世界时, 又称世界统一时间, 世界标准时间, 国际协调时间。

9.4. 我们JavaScript中认为UTC(Universal Time Coordinated)等同于GMT(格林尼治时间)。

10. 日期表示

10.1. JavaScript中, 日期使用格林尼治表示的。

11. 时区

11.1. 在设置日期时, 如果不规定时区, 则JavaScript会使用浏览器的时区。

11.2. 当获取日期时, 如果不规定时区, 则结果会被转换为浏览器时区。

11.3. 换句话说, 假如日期/时间以GMT(格林威治标准时间)创建, 该日期/时间将被转换为 CST(中国标准时间), 如果用户从中国进行浏览。

12. 显示日期

12.1. JavaScript(默认情况下)将以全文本字符串格式输出日期。

12.2. JavaScript中显示日期对象时, 会使用toString()方法自动转换为字符串。

var d = new Date();

document.write('d = ' + d + '<br />');

// 等同于

document.write('d.toString() = ' + d.toString() + '<br />');

12.3. toTimeString()把Date 对象的时间部分转换为字符串。

12.4. toDateString()把Date对象的日期部分转换为字符串。

12.5. toUTCString()根据世界时, 把Date对象转换为字符串。

12.6. toLocaleString()根据本地时间格式, 把Date对象转换为字符串。

12.7. toLocaleTimeString()根据本地时间格式, 把Date对象的时间部分转换为字符串。

12.8. toLocaleDateString()根据本地时间格式, 把Date对象的日期部分转换为字符串。

12.9. 例子

12.9.1. 代码

<!DOCTYPE html>
<html lang="zh-cn">
	<head>
		<meta charset="utf-8" />
		<title>显示日期</title>
	</head>
	<body>
		<script type="text/javascript">
			var d1 = new Date();
			
			document.write('d1 = ' + d1 + '<br />');
			document.write('d1.toString() = ' + d1.toString() + '<br />');
			document.write('d1.toUTCString() = ' + d1.toUTCString() + '<br />');
			document.write('d1.toLocaleString() = ' + d1.toLocaleString() + '<br />');
			document.write('d1.toDateString() = ' + d1.toDateString() + '<br />');
			document.write('d1.toLocaleDateString() = ' + d1.toLocaleDateString() + '<br />');
			document.write('d1.toTimeString() = ' + d1.toTimeString() + '<br />');
			document.write('d1.toLocaleTimeString() = ' + d1.toLocaleTimeString() + '<br />');
		</script>
	</body>
</html>

12.9.1. 效果图

/* * システム名 :受発注システム * 機能概要 :当日有効テーブルデータ登録を行う. * * 引数1 バッチID * 引数2 テーブルID * * Copyright(c) 2025 FamilyMart Co., Ltd. All Rights Reserved. * * 履歴: * 日付 更新者 内容 * 2025/09/19 丁 笑 新規作成 */ \set ON_ERROR_STOP on \pset columns 32767 /* ログ出力 */ CREATE OR REPLACE PROCEDURE OUTPUT_LOG_MESSAGE_B_BX_MST01_060_02(LEVEL IN CHAR, C_FUNC_ID IN CHAR, P_BATCH_ID IN VARCHAR, MESSAGE IN VARCHAR) AS $$ BEGIN PERFORM DBMS_OUTPUT.PUT_LINE(CLOCK_TIMESTAMP() ||' '|| LEVEL ||' '|| C_FUNC_ID ||' '|| P_BATCH_ID ||' '|| MESSAGE ); END $$ LANGUAGE plpgsql; DO $$ DECLARE /* 定数 */ C_LOG_LEVEL_INFO CONSTANT CHAR(4) := 'INFO'; C_LOG_LEVEL_ERROR CONSTANT CHAR(5) := 'ERROR'; C_FUNC_ID CONSTANT CHAR(3) := 'MST'; C_JOB_TITLE CONSTANT VARCHAR(256) := '受発注用マスタ取込・当日用マスタ作成(当日有効テーブル作成)'; /* パラメータ変数定義 */ P_BATCH_ID VARCHAR(256) := current_setting('custom.batch_id'); -- バッチID P_TABLE_ID VARCHAR(256) := current_setting('custom.table_id'); -- テーブルID /* 変数 */ V_PROC_CNT_CMT INTEGER := 0; -- 処理件数 V_TABLE_ID_FROM VARCHAR(256) :=''; --対象マスタテーブルID V_SQL TEXT := ''; --SQL文 BEGIN PERFORM DBMS_OUTPUT.SERVEROUTPUT(TRUE); CALL OUTPUT_LOG_MESSAGE_B_BX_MST01_060_02(C_LOG_LEVEL_INFO, C_FUNC_ID, P_BATCH_ID, '処理開始 : ' || C_JOB_TITLE); BEGIN -- 当日有効用の各マスタのデータを削除 EXECUTE 'TRUNCATE TABLE ' || P_TABLE_ID; CALL OUTPUT_LOG_MESSAGE_B_BX_MST01_060_02(C_LOG_LEVEL_INFO, C_FUNC_ID, P_BATCH_ID, 'テーブル:' || P_TABLE_ID || 'のデータ 削除 成功'); EXCEPTION WHEN OTHERS THEN CALL OUTPUT_LOG_MESSAGE_B_BX_MST01_060_02(C_LOG_LEVEL_ERROR, C_FUNC_ID, P_BATCH_ID, 'テーブル:' || P_TABLE_ID || 'のデータ 削除 エラー ' || SQLSTATE); RAISE; END; BEGIN -- 当日有効テーブルにより対応するマスタテーブルを取得 -- 対応関係を表するテンポラリーテーブルを作成 CREATE TEMPORARY TABLE IF NOT EXISTS table_map( table_key VARCHAR(255) PRIMARY KEY, table_value VARCHAR(255) ); -- 対応関係を登録 INSERT INTO table_map(table_key,table_value) VALUES ('BX_M_056_TYUKO_BTSRY_TRI','BX_M_011_BTSRY_TRI'), ('BX_M_057_TYUKO_CNTR_HSOMOTO','BX_M_012_CNTR_HSOMOTO'), ('BX_M_058_TYUKO_HSNSK','BX_M_013_HSNSK'), ('BX_M_059_TYUKO_HSNSK_DATA_SYU','BX_M_014_HSNSK_DATA_SYU'), ('BX_M_060_TYUKO_HSNSK_FURI','BX_M_015_HSNSK_FURI'), ('BX_M_061_TYUKO_SHRY_TRI','BX_M_016_SHRY_TRI'), ('BX_M_062_TYUKO_TRI_CHIKU','BX_M_017_TRI_CHIKU'), ('BX_M_064_TYUKO_FKKR_CBNR','BX_M_019_FKKR_CBNR'), ('BX_M_067_TYUKO_GBN','BX_M_022_GBN'), ('BX_M_068_TYUKO_HKBN_CHIKU','BX_M_023_HKBN_CHIKU'), ('BX_M_072_TYUKO_HTPTN','BX_M_027_HTPTN'), ('BX_M_074_TYUKO_ZEN_EVNT','BX_M_029_MSTG_ZEN_EVNT'), ('BX_M_078_TYUKO_SHO_BRAND','BX_M_033_SHO_BRAND'), ('BX_M_079_TYUKO_SHO_CHIKIG_JOHO','BX_M_034_SHO_CHIKIG_JOHO'), ('BX_M_080_TYUKO_SHO_CHIKUB_JOHO','BX_M_035_SHO_CHIKUB_JOHO'), ('BX_M_081_TYUKO_SHO_CHIKU_JOHO','BX_M_036_SHO_CHIKU_JOHO'), ('BX_M_082_TYUKO_SHO_BIN_JOHO','BX_M_037_SHO_BIN_JOHO'), ('BX_M_083_TYUKO_SHO_SHO_JOHO','BX_M_038_SHO_SHO_JOHO'), ('BX_M_084_TYUKO_SHO_SAKE_JOHO','BX_M_039_SHO_SAKE_JOHO'), ('BX_M_085_TYUKO_SHO_PLU_HNK_BF','BX_M_040_SHO_PLU_HNK_BF'), ('BX_M_088_TYUKO_SP_HTSN_PTN','BX_M_043_SP_HTSN_PTN'), ('BX_M_089_TYUKO_TENPO_PTN','BX_M_044_TENPO_PTN'), ('BX_M_090_TYUKO_UNEI_TENPO','BX_M_045_UNEI_TENPO'), ('BX_M_091_TYUKO_ZTTI_TENPO','BX_M_046_MSTG_ZTTI_TENPO'), ('BX_M_092_TYUKO_KOZA','BX_M_047_KOZA'), ('BX_M_093_TYUKO_MSTG_HNY','BX_M_048_MSTG_HNY'), ('BX_M_086_TYUKO_UKNR_TGT_TENPO','BX_M_041_UKNR_TGT_TENPO'), ('BX_M_087_TYUKO_UKNR_TGT_TRI','BX_M_042_UKNR_TGT_TRI'), ('BX_M_140_TYUKO_SHRY_BTSRY_TRI','BX_M_139_SHRY_BTSRY_TRI'), ('BX_M_115_TYUKO_NSHO_HTTI_JOHO','BX_M_113_NSHO_HTTI_JOHO'), ('BX_P_141_TYUKO_HNY','BX_P_094_HNY'); -- 引数.テーブルから対応するマスタテーブルを取得 SELECT table_value INTO V_TABLE_ID_FROM FROM table_map WHERE table_key = P_TABLE_ID; CALL OUTPUT_LOG_MESSAGE_B_BX_MST01_060_02(C_LOG_LEVEL_INFO, C_FUNC_ID, P_BATCH_ID, '対応するマスタテーブル: ' || V_TABLE_ID_FROM); EXCEPTION WHEN OTHERS THEN CALL OUTPUT_LOG_MESSAGE_B_BX_MST01_060_02(C_LOG_LEVEL_ERROR, C_FUNC_ID, P_BATCH_ID, '対応関係取得 エラー ' || SQLSTATE); RAISE; END; BEGIN -- 処理件数 V_PROC_CNT_CMT := 0; -- 条件に一致するデータを抽出し、当日有効用のマスタへ格納する V_SQL := ' INSERT INTO ' || P_TABLE_ID || ' SELECT * FROM ' || V_TABLE_ID_FROM || ' WHERE '; -- 新商品発注停止情報以外の場合処理区分を条件にする IF V_TABLE_ID_FROM = 'BX_P_094_HNY' THEN V_SQL := V_SQL || '(SELECT GYOMU_DATE FROM BJ_M_GYOMU_DATE) BETWEEN APY_SDATE AND APY_EDATE AND sr_kbn <> ''03'' '; ELSIF V_TABLE_ID_FROM != 'BX_M_113_NSHO_HTTI_JOHO' THEN V_SQL := V_SQL || '(SELECT GYOMU_DATE FROM BJ_M_GYOMU_DATE) BETWEEN applystrtb AND applyendb AND shrkbn <> ''03'' '; ELSE V_SQL := V_SQL || '(SELECT GYOMU_DATE FROM BJ_M_GYOMU_DATE) BETWEEN applystrtb AND applyendb'; END IF; EXECUTE V_SQL; GET DIAGNOSTICS V_PROC_CNT_CMT = ROW_COUNT; CALL OUTPUT_LOG_MESSAGE_B_BX_MST01_060_02(C_LOG_LEVEL_INFO, C_FUNC_ID, P_BATCH_ID, '当日有効用のマスタデータ 登録 ' || V_PROC_CNT_CMT || '件'); EXCEPTION WHEN OTHERS THEN CALL OUTPUT_LOG_MESSAGE_B_BX_MST01_060_02(C_LOG_LEVEL_ERROR, C_FUNC_ID, P_BATCH_ID, '当日有効用のマスタデータ 登録 エラー ' || SQLSTATE); RAISE; END; CALL OUTPUT_LOG_MESSAGE_B_BX_MST01_060_02(C_LOG_LEVEL_INFO, C_FUNC_ID, P_BATCH_ID, '正常終了 : ' || C_JOB_TITLE); CALL OUTPUT_LOG_MESSAGE_B_BX_MST01_060_02(C_LOG_LEVEL_INFO, C_FUNC_ID, P_BATCH_ID, ''); EXCEPTION WHEN OTHERS THEN CALL OUTPUT_LOG_MESSAGE_B_BX_MST01_060_02(C_LOG_LEVEL_ERROR, C_FUNC_ID, P_BATCH_ID, 'PL/pgSQL ERROR:'); CALL OUTPUT_LOG_MESSAGE_B_BX_MST01_060_02(C_LOG_LEVEL_ERROR, C_FUNC_ID, P_BATCH_ID, 'SQLSTATE =[' || SQLSTATE || '] [' || SQLERRM || ']'); CALL OUTPUT_LOG_MESSAGE_B_BX_MST01_060_02(C_LOG_LEVEL_ERROR, C_FUNC_ID, P_BATCH_ID, '異常終了 : ' || C_JOB_TITLE); CALL OUTPUT_LOG_MESSAGE_B_BX_MST01_060_02(C_LOG_LEVEL_ERROR, C_FUNC_ID, P_BATCH_ID, ''); RAISE; END $$ LANGUAGE plpgsql; 这段是什么意思
最新发布
11-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值