转 javascript 本地时间 和utc 节点 和 时间戳转换 的

###东八区时间计算。转换

https://c.runoob.com/front-end/852

UNIX 时间戳转换工具,可以将 UNIX 时间戳转换成标准格式的北京时间,也可以将标准格式的北京时间转换为 UNIX 时间戳。

关于Unix时间戳(Unix timestamp)
时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。

如何在不同编程语言中获取现在的Unix时间戳(Unix timestamp)?
Java    time
JavaScript    Math.round(new Date().getTime()/1000)
getTime()返回数值的单位是毫秒
Microsoft .NET / C#    epoch = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000
MySQL    SELECT unix_timestamp(now())
Perl    time
PHP    time()
PostgreSQL    SELECT extract(epoch FROM now())
Python    先 import time 然后 time.time()
Ruby    获取Unix时间戳:Time.now 或 Time.new
显示Unix时间戳:Time.now.to_i
SQL Server    SELECT DATEDIFF(s, '1970-01-01 00:00:00', GETUTCDATE())
Unix / Linux    date +%s
VBScript / ASP    DateDiff("s", "01/01/1970 00:00:00", Now())


其他操作系统 (如果Perl被安装在系统中) 命令行状态:perl
-e "print time" 如何在不同编程语言中实现Unix时间戳(Unix timestamp) → 普通时间? Java String date = new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new java.util.Date(Unix timestamp * 1000)) JavaScript 先 var unixTimestamp = new Date(Unix timestamp * 1000) 然后 commonTime = unixTimestamp.toLocaleString() Linux date -d @Unix timestamp MySQL from_unixtime(Unix timestamp) Perl 先 my $time = Unix timestamp 然后 my ($sec, $min, $hour, $day, $month, $year) = (localtime($time))[0,1,2,3,4,5,6] PHP date('r', Unix timestamp) PostgreSQL SELECT TIMESTAMP WITH TIME ZONE 'epoch' + Unix timestamp) * INTERVAL '1 second'; Python 先 import time 然后 time.gmtime(Unix timestamp) Ruby Time.at(Unix timestamp) SQL Server DATEADD(s, Unix timestamp, '1970-01-01 00:00:00') VBScript / ASP DateAdd("s", Unix timestamp, "01/01/1970 00:00:00") 其他操作系统 (如果Perl被安装在系统中) 命令行状态:perl -e "print scalar(localtime(Unix timestamp))" 如何在不同编程语言中实现普通时间 → Unix时间戳(Unix timestamp)? Java long epoch = new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm:ss").parse("01/01/1970 01:00:00"); JavaScript var commonTime = new Date(Date.UTC(year, month - 1, day, hour, minute, second)) MySQL SELECT unix_timestamp(time) 时间格式: YYYY-MM-DD HH:MM:SS 或 YYMMDD 或 YYYYMMDD Perl 先 use Time::Local 然后 my $time = timelocal($sec, $min, $hour, $day, $month, $year); PHP mktime(hour, minute, second, day, month, year) PostgreSQL SELECT extract(epoch FROM date('YYYY-MM-DD HH:MM:SS')); Python 先 import time 然后 int(time.mktime(time.strptime('YYYY-MM-DD HH:MM:SS', '%Y-%m-%d %H:%M:%S'))) Ruby Time.local(year, month, day, hour, minute, second) SQL Server SELECT DATEDIFF(s, '1970-01-01 00:00:00', time) Unix / Linux date +%s -d"Jan 1, 1970 00:00:01" VBScript / ASP DateDiff("s", "01/01/1970 00:00:00", time)

 

 ######感谢壹峰 

Oracle时间与Unix时间戳的转换

Unix时间戳记是从'1970-01-01 00:00:00'GMT开始的秒数,表现为整数型。

Oracle中的时间是Date型,以下函数提供了两种时间转换的Oracle函数

(1)从Unix时间戳记转换为Oracle时间

create or replace function unix_to_oracle(in_number NUMBER) return date is
begin  
  return(TO_DATE('19700101','yyyymmdd') + in_number/86400 +TO_NUMBER(SUBSTR(TZ_OFFSET(sessiontimezone),1,3))/24);
end unix_to_oracle;

(2)由Oracle时间Date型转换为Unix时间戳记
create or replace function oracle_to_unix(in_date IN DATE) return number is  
begin  
  return( (in_date -TO_DATE('19700101','yyyymmdd'))*86400 - TO_NUMBER(SUBSTR(TZ_OFFSET(sessiontimezone),1,3))*3600);
end oracle_to_unix;

 

  
-- 时间转 10位时间戳
select (sysdate - TO_DATE('19700101', 'yyyymmdd')) * 86400 -
       TO_NUMBER(SUBSTR(TZ_OFFSET(sessiontimezone), 1, 3)) * 3600
  from dual;
  
-- 10位时间戳 转  时间
select TO_DATE('19700101', 'yyyymmdd') + 1516862035 / 86400 +
       TO_NUMBER(SUBSTR(TZ_OFFSET(sessiontimezone), 1, 3)) / 24
  from dual;

 

 

##感谢作业网用户

 

每个地区都有自己的本地时间,在网上以及无线电通信中时间转换的问题就显得格外突出.我自己就经常混淆于此,特地研究了一下,记录在此以备忘.
整个地球分为二十四时区,每个时区都有自己的本地时间.在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated).UTC与格林尼治平均时(GMT, Greenwich Mean Time)一样,都与英国伦敦的本地时相同.在本文中,UTC与GMT含义完全相同.
北京时区是东八区,领先UTC八个小时,在电子邮件信头的Date域记为+0800.如果在电子邮件的信头中有这么一行:
Date: Fri, 08 Nov 2002 09:42:22 +0800
说明信件的发送地的地方时间是二○○二年十一月八号,星期五,早上九点四十二分(二十二秒),这个地方的本地时领先UTC八个小时(+0800, 就是东八区时间).电子邮件信头的Date域使用二十四小时的时钟,而不使用AM和PM来标记上下午.
以这个电子邮件的发送时间为例,如果要把这个时间转化为UTC,可以使用一下公式:
UTC + 时区差 = 本地时间
时区差东为正,西为负.在此,把东八区时区差记为 +0800,  -》重要
UTC + (+0800) = 本地(北京)时间 (1)
那么,UTC = 本地时间(北京时间))- 0800 (2)
0942 - 0800 = 0142
即UTC是当天凌晨一点四十二分二十二秒.如果结果是负数就意味着是UTC前一天,把这个负数加上2400就是UTC在前一天的时间.例如,本地(北京)时间是 0432 (凌晨四点三十二分),那么,UTC就是 0432 - 0800 = -0368,负号意味着是前一天, -0368 + 2400 = 2032,既前一天的晚上八点三十二分.
纽约的时区是西五区,比UTC落后五个小时,记为 -0500:
UTC + (-0500) = 纽约时间 (3)
UTC = 纽约时间 + 0500 (4)
把(2)式 - (4)式相比较,
UTC = 北京时间 - 0800 = 纽约时间 + 0500 (5)
即 北京时间 = 纽约时间 + 1300 (6)
即北京时间领先纽约时间十三个小时,由(6)式,
纽约时间 = 北京时间 - 1300 (7)
在四月下旬,纽约又换用夏令时,又称为日光节约时,比标准纽约时间提前一个小时,实际成为西四区的标准时间,成为 -0400.
UTC + (-0400) = 纽约夏令时,套用以上公式,
北京时间 = 纽约夏令时 + 1200
纽约夏令时 = 北京时间 - 1200
在这些转换中,最重要的公式就是
UTC + 时区差 = 本地时间
时区差东为正,西为负.例如,东八区(北京)是 +0800,西五区(纽约)是-0500,加州是西八区,是-0800,美国中部时区是西六区,-0600,美国山地时区是西七区,-0700,太平洋时区是西八区,-0800,在夏天使用夏时制,成为-0700.德国时区是东一区,+0100,夏天变为+0200.
多数电子邮件程序,例如Outlook Express,在显示时间时,计算机程序把时间先转换成为本地时间再显示,例如,邮件的Date域为:
Date: Fri, 08 Nov 2002 09:42:22 +0800
Outlook Express在显示时就显示为:
Date: Thur, 07 Nov 2002 08:42:22 pm,把北京时间转换成为了纽约时间,而且把二十四小时格式的时间转换成为了十二小时的格式.当然,为了时间转换正确,发送方和接受方的计算机的时区都要设置正确,在这里,发送方的时区要正确地设为北京时区东八区,而我的时区要设为西五区.
为了方便起见,我在这里放上纽约,加洲以及北京实时显示的时钟,以省去计算的麻烦.

 

 

#####SAMPLE 3 Linux shell中对日期时间的处理、日期时间加减

Linux shell中对日期时间的处理、日期时间加减

 编程语言  lxw1234@qq.com  6年前 (2015-10-10)  20502℃  0评论

传入一个日期,获取N天前的日期

例如,传入2015-10-10,获取3天前的日期:

  1. [liuxiaowen@getway ~]$ day1=2015-10-10
  2. ##先将传入的2015-10-10转换成精确到秒的时间戳
  3. [liuxiaowen@getway ~]$ time1=`date +%s -d "$day1"`
  4. [liuxiaowen@getway ~]$ echo $time1
  5. 1444406400
  6. ##在利用时间戳减去3天的秒数(3*86400秒),得到3天前的时间戳
  7. [liuxiaowen@getway ~]$ time2=$(($time1-3*86400))
  8. [liuxiaowen@getway ~]$ echo $time2
  9. 1444147200
  10. ##将3天前的时间戳转换成日期
  11. [liuxiaowen@getway ~]$ day2=$(date +%Y-%m-%d -d "1970-01-01 UTC $time2 seconds")
  12. [liuxiaowen@getway ~]$ echo $day2
  13. 2015-10-07
  14.  

获取两个日期之间相差的天数

还是利用上面的办法,获取2015-10-10和2015-09-27之间相差的天数

  1. [liuxiaowen@getway ~]$ day1=2015-10-10
  2. [liuxiaowen@getway ~]$ day2=2015-09-27
  3. [liuxiaowen@getway ~]$
  4. [liuxiaowen@getway ~]$ time1=`date +%s -d "$day1"`
  5. [liuxiaowen@getway ~]$ time2=`date +%s -d "$day2"`
  6. [liuxiaowen@getway ~]$
  7. [liuxiaowen@getway ~]$ days=$((($time1-$time2)/86400))
  8. [liuxiaowen@getway ~]$ echo $days
  9. 13
  10.  

获取今天、昨天、前天的日期

  1. ###今天
  2. [liuxiaowen@getway ~]$ date -d "now" +%Y-%m-%d
  3. 2015-10-10
  4. [liuxiaowen@getway ~]$ date -d "today" +%Y-%m-%d
  5. 2015-10-10
  6.  
  7. ###昨天
  8. [liuxiaowen@getway ~]$ date -d "yesterday" +%Y-%m-%d
  9. 2015-10-09
  10. [liuxiaowen@getway ~]$ date -d "1 days ago" +%Y-%m-%d
  11. 2015-10-09
  12.  
  13. ###前天
  14. [liuxiaowen@getway ~]$ date -d "2 days ago" +%Y-%m-%d
  15. 2015-10-08

其他Linux shell中关于日期时间的处理,基本上都可以参考上面的方法来获取。

 

 

 

#######samlple 4  将数字日期 转换成 linux timestampe

 

1.变量-s,-e, 20210714

# date is number data`
a=20200910
#date -d 20210714 +%s
date -d $a +%s
#to_unix timestampe
loca=$(date -d $a +%s)

#might end_time
date -d "$a +200 days"
et=$(date -d "$a +200 days" +%s)

##might start_time
date -d "$a -200 days"
st=$(date -d "$a -200 days" +%s)


echo $st
echo $et
#st=1590980529
#et=1633230129

 

 

##########sample javascript 案例 和 javscripts 调试方法

 



#######1 传递元素内容到链接中
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>传递元素文本内容到链接中</title>
</head>
<body>
<div id="myElement">This is my element</div>
<a href="#" id="myLink">My Link</a>

<label id="connectionstr" for="input">输入连接字符串:</label>
<textarea class="form-control" id="connect_strings" name="connect_strings" rows="3"> 你好</textarea>
<script>
const element = document.getElementById('connect_strings');
const elementText = element.value;
const link = document.getElementById('myLink');

link.href += '?element=' + encodeURIComponent(elementText);
</script>
</body>
</html>


#####2 传递元素文本内容到链接中
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>传递元素文本内容到链接中</title>
</head>
<body>
<div id="myElement">This is my element</div>
<form>
<label for="input-text">请输入文本:</label>
<input type="text" id="input-text" name="input-text">
<button id="submit-button">提交</button>
<a href="#" id="myLink">My Link</a>

</form>
<script>
const submitButton = document.getElementById("submit-button");

submitButton.addEventListener("click", function(event) {
event.preventDefault(); // 防止表单提交

const inputText = document.getElementById("input-text").value;
const link = "https://example.com?text=" + inputText; // 设置带文本值的链接
window.location.href = link; // 跳转到链接
};
</script>
<label for="input-text">inputText</label>

</body>
</html>


##3 传递元素文本内容到网页中输出中

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>获取输入框输入值</title>
</head>
<body>
<input type="text" id="inputBox" placeholder="在这里输入...">
<button onclick="getText()">获取输入值</button>
<p id="output"></p>
<script >
function getText() {
const inputValue = document.getElementById("inputBox").value;
document.getElementById("output").innerText = `输入值: ${inputValue}`;
}
</script>
</body>
</html>

 

### 传递元素到URL_FOR 链接中
<!DOCTYPE html>
<html>
<body>

<h1>Pass Variable to url_for Function</h1>

<p>Enter a variable value:</p>

<input type="text" id="variableInput">

<button onclick="addVarToURL()">Add variable to URL</button>

<script>
function addVarToURL() {
let variable = document.getElementById("variableInput").value;
let url = "{{ url_for('index') }}";
let newUrl = url + "?variable=" + variable;

window.location.href = newUrl;
}
</script>

</body>
</html>

 

### 传递元素到URL_FOR 链接中2, 2个文件,一个文件html ,一个文件flask py
##in html


### 传递元素到URL_FOR 链接中2
##in html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Flask-CX_Oracle Report</title>

</head>
<body>
<h1>Flask-CX_Oracle Report</h1>

<div class="form-group">
<form method="POST" >
<input type="text" name="username">
<input type="submit" value="Submit">

<label id="connectionstr" for="input">输入连接字符串:</label>
<textarea class="form-control" id="connect_strings" name="connect_strings" rows="3"> 你好</textarea>
<button class="btn btn-primary" type="button">请创建报告</button>
</form>
</div>

<p>请创建报告:</p>
<p><a onclick="addVarToURL()" href="#" id="myLink">点击这里</a>下载报告</p>

<script>


function addVarToURL() {
let variable = document.getElementById("connect_strings").value;
let url = "{{ url_for('generate_report',username=variable)}}";
<!-- let newUrl = url + ",username=" + variable;-->
let newUrl = url + variable.replaceAll('/', '%2F');
window.location.href = newUrl;
}
</script>
</body>
</html>

 

##in py
def generate_report():
username = request.args.get("username", None)
print (username)

 

 

###javascript  调试方法

在JavaScript编程中,没有直接的print方法可以在控制台中输出文本。不过,
你可以使用console.log()方法来在控制台中输出文本。例如,要输出“Hello World!”,
你可以这样写console.log("Hello World!");这将在控制台中打印出“Hello World!”文本。
你还可以通过console.log()方法输出变量、对象、数组等类型的数据。例如:let name = "John";
console.log("Hello, " + name + "!");这将在控制台中打印出“Hello, John!”文本。
除了console.log()方法外,还有其他一些输出文本的方法可以在JavaScript中使用,例如alert()方法可以在弹出窗口中显示文本,document.write()方法可以将文本写入HTML文档中等等。但是,在JavaScript编程项目中,console.log()方法是最常用的输出文本的方法发布于 2023-03-22 08:22・IP 属地浙江

作者:知识咖
链接:https://www.zhihu.com/question/591122133/answer/2947491443
来源:知乎

posted @ 2020-06-02 17:04  feiyun8616  阅读(1030)  评论(0编辑  收藏  举报