如何表示各个时区的时间DateTime.ToString()

使用sqlite进行时间的插入的时候,使用了

DateTime.ToString("s")  //s: 2008-06-15T21:15:07

插入到数据库之后,发现时间被加了8个小时

找了半天资料,才找到原因

This profile defines two ways of handling time zone offsets:

有两种方式处理时区的时差

Times are expressed in UTC (Coordinated Universal Time), with a special UTC designator ("Z").

如果是UTC时间的话,后面需要加Z表示。1994-11-05T13:15:30Z

Times are expressed in local time, together with a time zone offset in hours and minutes.

A time zone offset of "+hh:mm" indicates that the date/time uses a local time zone which is "hh" hours and "mm" minutes ahead of UTC.

A time zone offset of "-hh:mm" indicates that the date/time uses a local time zone which is "hh" hours and "mm" minutes behind UTC.

其它的时间,在年月日时分秒后面,通过+-时差来表示。

如果时间比UTC时间快的话,就用+hh:mm表示,后面的时间表示相差的时间。

如果时间比UTC时间慢的话,就用-hh:mm表示,后面的时间表示相差的时间。

+hh:mm和-hh:mm实际上表示的是时区,+08:00表示的是东八区,-05:00表示的是西五区

有两种方式来说明时间

1994-11-05T08:15:30-05:00 corresponds to November 5, 1994, 8:15:30 am, US Eastern Standard Time.

//时间是1994-11-05 08:15:30   表示的是西五区的时间,比UTC时间慢5个小时   换算成UTC时间的话,需要加上5个小时,就是1994-11-05 13:15:30

1994-11-05T16:15:30+08:00   表示的是东八区的时间,比UTC时间快8个小时   换算成UTC时间的话,需要减去8个小时,就是1994-11-05 13:15:30

1994-11-05T13:15:30Z corresponds to the same instant.//很明显是UTC时间

总结:

DateTime.ToString("s")  //s: 2008-06-15T21:15:07 

这个时间在存入SQLite数据库的时候,被当做UTC时间了,因为我的电脑里面设置的时区,是东八区的北京时间,所以被加上了8个小时存储

解决方法:

DateTime.ToString("yyyy-MM-dd HH:mm:ss") 使用这个,来存储就没有问题。

或者可以考虑设置SQLiteConnecttion.DateTimeKind

参考

Date and Time Formats

http://www.w3.org/TR/NOTE-datetime

DateTime.ToString Method (String)

http://msdn.microsoft.com/en-us/library/zdtaw1bw(v=vs.110).aspx

时间: 2024-10-19 05:23:17

如何表示各个时区的时间DateTime.ToString()的相关文章

实例365(6)---------DateTime.ToString格式化日期,使用DateDiff方法获取日期时间的间隔数

一:DateTime.ToString格式化日期,截图 二:代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace TmrFormat { public part

C#DateTime.ToString 格式化时间字符串和数值类型转换为字符串

我们经常会遇到对时间进行转换,达到不同的显示效果,默认格式为:2006-6-6 14:33:34,如果要换成200606,06-2006,2006-6-6或更多的格式该怎么办呢?这里将要用到:DateTime.ToString的方法. 一.DateTime.ToString格式模式 下面列出了DateTime.ToString(string format) 中 format 参数.这些模式是区分大小写的:例如,识别"MM",但不识别"mm". d         

【转载ToString()转换格式;DateTime.ToString()用法详解】

ToString()转换格式;DateTime.ToString()用法详解 格式模式 说明和关联属性 c.C 货币格式.关联的属性包括: CurrencyDecimalDigits, CurrencyDecimalSeparator, CurrencyGroupSeparator, CurrencyGroupSizes, CurrencyNegativePattern, CurrencyPositivePattern, CurrencySymbol. d.D 十进制格式. e.E 科学计数(指

转,DateTime.ToString()格式详解

DateTime.ToString()用法详解 我们经常会遇到对时间进行转换,达到不同的显示效果,默认格式为:2006-6-6 14:33:34 如果要换成成200606,06-2006,2006-6-6或更多的格式该怎么办呢?这里将要用到:DateTime.ToString的方法(String, IFormatProvider)示例:using System;using System.Globalization;String format="D";DateTime date=Data

C#时间DateTime包含星期存入数据库错误

1)[问题] 发现我要存到数据库中的时间DateTime中间多了星期 ,即 (2015/11/24 星期二 21:48:54 )这种格式的时间,mysql报错说格式时间不正确. 我用如下方法,弹出来的时间都带着日期, MessageBox.Show(DateTime.Now.().ToString()); MessageBox.Show(DateTime.Now.ToLongTimeString().ToString()); MessageBox.Show(DateTime.Now.ToLong

Java 时区之间时间转换

1 SimpleDateFormat foo = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 2 System.out.println("foo:" + foo.format(new Date())); 3 4 Calendar gc = GregorianCalendar.getInstance(); 5 System.out.println("gc.getTime():" + gc.getTime

Python 日期和时间 —— datetime

Python 日期和时间 —— datetime Python提供了多个内置模块用于操作日期时间,如calendar,time,datetime.time提供的接口与C标准库time.h基本一致.其中应用最广的是datetime,相比于time模块,datetime模块的接口则更直观.更容易调用. datetime 模块为日期和时间处理同时提供了简单和复杂的方法.支持日期和时间算法的同时,实现的重点在于更有效的处理和格式化输出.该模块还支持时区处理.本文对 datetime库进行学习. date

c# DateTime.ToString()转换为统一的格式

DateTime.ToString()的转换结果时根据当前电脑的显示格式来转换的,不能同意,而且有些格式我们想将他们重新转换为时间时,会报错,如: 2017/11/21/周二 10:23:57,如果转换这个字符串为DateTime时,会失败,所以就需要给程序设置一个默认的转换方式,每次在调用DateTime.ToString()的时候就直接转换为我们想要的格式,如下: DateTime.ToString("yyyy-MM-dd HH:mm:ss") 但是这种方法有时觉得太麻烦,每个都需

用DateTime.ToString(string format)输出不同格式的日期

Copy自:http://www.cnblogs.com/xvqm00/archive/2009/02/19/1394093.html DateTime.ToString()函数有四个重载.一般用得多的就是不带参数的那个了.殊不知,DateTime.ToString(string format)功能更强大,能输出不同格式的日期.以下把一些情况罗列出来,供大家参考.有些在MSDN上有的就没有列出来了. 1.         y代表年份,注意是小写的y,大写的Y并不代表年份. 2.