2013-01-18T22:55:13の更新内容

programming/netfx/string/2_1_comparison/index.wiki.txt

current previous
112,49 112,6
 
-1
-1
 
}}
}}
 

        

        
+
IndexOfメソッド、LastIndexOfメソッドでは文字列ではなく文字(char)の位置を検索することも出来ます。 文字列内に指定された文字がない場合は同様に-1が返されます。
+

          
+
#tabpage(C#)
+
#code(cs){{
+
using System;
+

          
+
class Sample
+
{
+
  static void Main()
+
  {
+
    string s = "foo bar foo";
+

          
+
    Console.WriteLine(s.IndexOf('o'));
+
    Console.WriteLine(s.LastIndexOf('o'));
+
    Console.WriteLine(s.IndexOf('x'));
+
    Console.WriteLine(s.LastIndexOf('x'));
+
  }
+
}
+
}}
+
#tabpage(VB)
+
#code(vb){{
+
Imports System
+

          
+
Class Sample
+
  Shared Sub Main()
+
    Dim s As String = "foo bar foo"
+

          
+
    Console.WriteLine(s.IndexOf("o"c))
+
    Console.WriteLine(s.LastIndexOf("o"c))
+
    Console.WriteLine(s.IndexOf("x"c))
+
    Console.WriteLine(s.LastIndexOf("x"c))
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
#prompt{{
+
1
+
10
+
-1
+
-1
+
}}
+

          
 
IndexOfメソッド、LastIndexOfメソッドでは、文字列比較時のオプションを指定することができ、例えば大文字小文字の違いを無視した検索を行うことも出来ます。 文字列比較時のオプションについては[[StringComparisonとStringComparer>programming/netfx/string/2_2_compareoptions#StringComparisonStringComparer]]で詳しく説明します。
IndexOfメソッド、LastIndexOfメソッドでは、文字列比較時のオプションを指定することができ、例えば大文字小文字の違いを無視した検索を行うことも出来ます。 文字列比較時のオプションについては[[StringComparisonとStringComparer>programming/netfx/string/2_2_compareoptions#StringComparisonStringComparer]]で詳しく説明します。
 

        

        
 
#tabpage(C#)
#tabpage(C#)
366,96 323,6
 
True
True
 
False
False
 
True
True
+
False
+
}}
+

          
+
Contains・StartsWith・EndsWithの各メソッドは、[[IndexOf・LastIndexOfメソッド>#String.IndexOf]]とは異なりcharを引数にとるバージョンが用意されていないので、文字単位での一致を調べることはできません。 文字列が指定された文字で始まる/終わる/含むかどうかを調べるには、IndexOf・LastIndexOfメソッドを使う必要があります。 次の例は、IndexOf・LastIndexOfメソッドを使って、charを引数にとるContains・StartsWith・EndsWithメソッドを実装したものです。
+

          
+
#tabpage(C#)
+
#code(cs){{
+
using System;
+

          
+
class Sample
+
{
+
  // 文字列sが指定された文字cを含むかどうか調べるメソッド
+
  static bool Contains(string s, char c)
+
  {
+
    return s.IndexOf(c) != -1;
+
  }
+

          
+
  // 文字列sが指定された文字cで始まるかどうか調べるメソッド
+
  static bool StartsWith(string s, char c)
+
  {
+
    return s.IndexOf(c) == 0;
+
    // もしくは単純に
+
    // return s[0] == c;
+
  }
+

          
+
  // 文字列sが指定された文字cで終わるかどうか調べるメソッド
+
  static bool EndsWith(string s, char c)
+
  {
+
    return s.LastIndexOf(c) == s.Length - 1;
+
    // もしくは単純に
+
    // return s[s.Length - 1] == c;
+
  }
+

          
+
  static void Main()
+
  {
+
    string s = "The quick brown fox jumps over the lazy dog";
+

          
+
    Console.WriteLine(Contains(s, 'f'));    // 文字列が'f'を含むか
+
    Console.WriteLine(Contains(s, 'A'));    // 文字列が'A'を含むか
+
    Console.WriteLine(StartsWith(s, 'T'));  // 文字列が'T'で始まるか
+
    Console.WriteLine(StartsWith(s, 'l'));  // 文字列が'l'で始まるか
+
    Console.WriteLine(EndsWith(s, 'g'));    // 文字列が'g'で終わるか
+
    Console.WriteLine(EndsWith(s, 't'));    // 文字列が't'で終わるか
+
  }
+
}
+
}}
+
#tabpage(VB)
+
#code(vb){{
+
Imports System
+

          
+
Class Sample
+
  ' 文字列sが指定された文字cを含むかどうか調べるメソッド
+
  Shared Function Contains(ByVal s As String, ByVal c As Char) As Boolean
+
    Return s.IndexOf(c) <> -1
+
  End Function
+

          
+
  ' 文字列sが指定された文字cで始まるかどうか調べるメソッド
+
  Shared Function StartsWith(ByVal s As String, ByVal c As Char) As Boolean
+
    Return s.IndexOf(c) = 0
+
    ' もしくは単純に
+
    ' Return s(0) = c
+
  End Function
+

          
+
  ' 文字列sが指定された文字cで終わるかどうか調べるメソッド
+
  Shared Function EndsWith(ByVal s As String, ByVal c As Char) As Boolean
+
    Return s.LastIndexOf(c) = s.Length - 1
+
    ' もしくは単純に
+
    ' Return s(s.Length - 1) = c
+
  End Function
+

          
+
  Shared Sub Main()
+
    Dim s As String = "The quick brown fox jumps over the lazy dog"
+

          
+
    Console.WriteLine(Contains(s, "f"c))    ' 文字列が'f'を含むか
+
    Console.WriteLine(Contains(s, "A"c))    ' 文字列が'A'を含むか
+
    Console.WriteLine(StartsWith(s, "T"c))  ' 文字列が'T'で始まるか
+
    Console.WriteLine(StartsWith(s, "l"c))  ' 文字列が'l'で始まるか
+
    Console.WriteLine(EndsWith(s, "g"c))    ' 文字列が'g'で終わるか
+
    Console.WriteLine(EndsWith(s, "t"c))    ' 文字列が't'で終わるか
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
#prompt{{
+
True
+
False
+
True
+
False
+
True
 
False
False
 
}}
}}
 

        

        

programming/netfx/collections/2_generic_2_dictionary/index.wiki.txt

current previous
420,23 420,6
 
}}
}}
 

        

        
 
**要素の列挙 [#Dictionary_Enumeration]
**要素の列挙 [#Dictionary_Enumeration]
+
***DictionaryとKeyValuePair
+
列挙について解説する前に、Dictionaryの内部構造と&msdn(netfx,type,System.Collections.Generic.KeyValuePair`2){KeyValuePair構造体};について触れておきます。 Dictionaryでは、要素を格納する際、キーと値の組み合わせをKeyValuePairとして格納します。 KeyValuePairはその名の通り、キーとそれに対応する値のペアを表す構造体です。 Dictionaryの内部では、キーと値の組み合わせはKeyValuePairで管理されます。
+

          
+
また、DictionaryはインターフェイスICollection<KeyValuePair<TKey, TValue>>を実装しているため、KeyValuePairのコレクションとして動作します。 つまりDictionaryはKeyValuePairのコレクションと見ることが出来ます。
+

          
+
#column
+
Dictionaryの内部構造のイメージ
+
|KeyValuePair[0] &column{Key = "foo",Value = 16};|
+
|KeyValuePair[1] &column{Key = "bar",Value = 72};|
+
|KeyValuePair[2] &column{Key = "baz",Value = 42};|
+
|CENTER::&br;:|
+
|KeyValuePair[n] &column{Key = ...,Value = ...};|
+
#column-end
+

          
+
なお、Dictionaryは''順序を持たないコレクション''であるため、実際には上図のように各KeyValuePairに対してインデックスが振られる訳ではありません。
+

          
+
***要素の列挙
 
List等と同様にDictionaryもforeach文によって要素を列挙することができますが、Dictionaryではキー・値のペアは&msdn(netfx,type,System.Collections.Generic.KeyValuePair`2){KeyValuePair構造体};として格納されているため、列挙する場合もKeyValuePair構造体の形で列挙されます。 列挙されるKeyValuePairの&msdn(netfx,member,System.Collections.Generic.KeyValuePair`2.Key){Keyプロパティ};を参照することでキーを、&msdn(netfx,member,System.Collections.Generic.KeyValuePair`2.Value){Valueプロパティ};を参照することで値を取得することが出来ます。
List等と同様にDictionaryもforeach文によって要素を列挙することができますが、Dictionaryではキー・値のペアは&msdn(netfx,type,System.Collections.Generic.KeyValuePair`2){KeyValuePair構造体};として格納されているため、列挙する場合もKeyValuePair構造体の形で列挙されます。 列挙されるKeyValuePairの&msdn(netfx,member,System.Collections.Generic.KeyValuePair`2.Key){Keyプロパティ};を参照することでキーを、&msdn(netfx,member,System.Collections.Generic.KeyValuePair`2.Value){Valueプロパティ};を参照することで値を取得することが出来ます。
 

        

        
 
また、キーと値を個別に列挙することも出来ます。 &msdn(netfx,member,System.Collections.Generic.Dictionary`2.Keys){Keysプロパティ};を参照することでDictionaryに格納されているすべてのキーを、&msdn(netfx,member,System.Collections.Generic.Dictionary`2.Values){Valuesプロパティ};を参照することですべての値を取得・列挙することが出来ます。
また、キーと値を個別に列挙することも出来ます。 &msdn(netfx,member,System.Collections.Generic.Dictionary`2.Keys){Keysプロパティ};を参照することでDictionaryに格納されているすべてのキーを、&msdn(netfx,member,System.Collections.Generic.Dictionary`2.Values){Valuesプロパティ};を参照することですべての値を取得・列挙することが出来ます。

programming/netfx/collections/2_generic_1_list/index.wiki.txt

current previous
131,9 131,9
 
    // (インデックスは全要素数の範囲内なので例外はスローされない)
    // (インデックスは全要素数の範囲内なので例外はスローされない)
 
    list[0] = 3;
    list[0] = 3;
 

        

        
~
    // インデックス99の要素に値を設定する
    // インデックス100の要素に値を設定する
 
    // (インデックスは全要素数の範囲を超えるため例外がスローされる)
    // (インデックスは全要素数の範囲を超えるため例外がスローされる)
~
    list[99] = 1000000;
    list[100] = 1000000;
 
  }
  }
 
}
}
 
}}
}}
150,9 150,9
 
    ' (インデックスは全要素数の範囲内なので例外はスローされない)
    ' (インデックスは全要素数の範囲内なので例外はスローされない)
 
    list(0) = 3
    list(0) = 3
 

        

        
~
    ' インデックス99の要素に値を設定する
    ' インデックス100の要素に値を設定する
 
    ' (インデックスは全要素数の範囲を超えるため例外がスローされる)
    ' (インデックスは全要素数の範囲を超えるため例外がスローされる)
~
    list(99) = 1000000
    list(100) = 1000000
 
  End Sub
  End Sub
 
End Class
End Class
 
}}
}}
165,53 165,6
 
   場所 Sample.Main()
   場所 Sample.Main()
 
}}
}}
 

        

        
+
なお、このような操作を行いたい場合は、Addメソッドで必要な要素数になるまで追加を繰り返すか、あらかじめ必要な要素数を確保した配列を用意してからListを作成する、といった方法を取ることができます。 次の例では、全要素数が100の配列を用意してからListを作成しています。
+

          
+
#tabpage(C#)
+
#code(cs){{
+
using System;
+
using System.Collections.Generic;
+

          
+
class Sample
+
{
+
  static void Main()
+
  {
+
    // 全要素数が100の配列を作成する
+
    int[] arr = new int[100];
+

          
+
    // 配列からListを作成する
+
    List<int> list = new List<int>(arr);
+

          
+
    // インデックス99の要素に値を設定する
+
    // (インデックスはListの元になった配列の全要素数の範囲内なので例外はスローされない)
+
    list[99] = 1000000;
+
  }
+
}
+
}}
+
#tabpage(VB)
+
#code(vb){{
+
Imports System
+
Imports System.Collections.Generic
+

          
+
Class Sample
+
  Shared Sub Main()
+
    ' 全要素数が100の配列を作成する
+
    Dim arr(99) As Integer
+

          
+
    ' 配列からListを作成する
+
    Dim list As New List(Of Integer)(arr)
+

          
+
    ' インデックス99の要素に値を設定する
+
    ' (インデックスはListの元になった配列の全要素数の範囲内なので例外はスローされない)
+
    list(99) = 1000000
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
上記の例では、元になる配列arrと、それをもとに作成するlistの二つで個別に領域が確保される点に注意してください。
+

          
+

          
 
**要素の追加・挿入
**要素の追加・挿入
 
Listは格納できる要素の数は可変であるため、任意の時点で要素を追加することが出来ます。 要素を追加するには、&msdn(netfx,member,System.Collections.Generic.List`1.Add){Addメソッド};を使います。 このメソッドを使うと、Listの一番最後に値が追加されます。 位置を指定して要素を挿入したい場合は&msdn(netfx,member,System.Collections.Generic.List`1.Insert){Insertメソッド};を使います。
Listは格納できる要素の数は可変であるため、任意の時点で要素を追加することが出来ます。 要素を追加するには、&msdn(netfx,member,System.Collections.Generic.List`1.Add){Addメソッド};を使います。 このメソッドを使うと、Listの一番最後に値が追加されます。 位置を指定して要素を挿入したい場合は&msdn(netfx,member,System.Collections.Generic.List`1.Insert){Insertメソッド};を使います。
 

        

        

programming/netfx/collections/3_objectmodel_2_observablecollection/index.wiki.txt

current previous
176,167 176,6
 
&msdn(netfx,member,System.Collections.ObjectModel.ObservableCollection`1.BlockReentrancy){BlockReentrancyメソッド};と&msdn(netfx,member,System.Collections.ObjectModel.ObservableCollection`1.CheckReentrancy){CheckReentrancyメソッド};を使うことで、コレクション変更時の再入試行を禁止できるようになります。 BlockReentrancyメソッドが返すIDisposableオブジェクトが破棄される前にCheckReentrancyを呼び出すとInvalidOperationExceptionをスローします。
&msdn(netfx,member,System.Collections.ObjectModel.ObservableCollection`1.BlockReentrancy){BlockReentrancyメソッド};と&msdn(netfx,member,System.Collections.ObjectModel.ObservableCollection`1.CheckReentrancy){CheckReentrancyメソッド};を使うことで、コレクション変更時の再入試行を禁止できるようになります。 BlockReentrancyメソッドが返すIDisposableオブジェクトが破棄される前にCheckReentrancyを呼び出すとInvalidOperationExceptionをスローします。
 

        

        
 

        

        
+
**並べ替え(ソート・リバース)
+
ObservableCollectionにはSortやReverseといった並べ替えのメソッドは用意されていませんが、拡張メソッドの[[OrderByメソッド>programming/netfx/sorting/0_basictypes#Enumerable.OrderBy]]や[[OrderByDescendingメソッド>programming/netfx/sorting/0_basictypes#Enumerable.OrderByDescending]]を使うことでコレクションをソートした結果を得ることが出来ます。
+

          
+
もしくは、[[Collection>programming/netfx/collections/3_objectmodel_1_collection#Collection]]と同様にObservableCollectionを継承して内部のコレクションをソート・リバースするメソッドを追加することが出来ます。 なお、このようにして追加したメソッドを呼び出す場合、ソート・リバースを行い要素が並べ替えられる度にCollectionChangedイベントが発生する点に注意が必要です。
+

          
+
次の例は、ObservableCollectionを継承してSortメソッドとReverseメソッドを実装するものです。
+

          
+
#tabpage(C#)
+
#code(cs){{
+
using System;
+
using System.Collections.ObjectModel;
+
using System.Collections.Specialized;
+

          
+
class SortableCollection : ObservableCollection<int>
+
{
+
  public void Sort()
+
  {
+
    // IListインターフェイスからArrayListのラッパーを作り、既定のIComparer<int>を使ってソートする
+
    System.Collections.ArrayList.Adapter(this).Sort(System.Collections.Generic.Comparer<int>.Default);
+
  }
+

          
+
  public void Reverse()
+
  {
+
    // IListインターフェイスからArrayListのラッパーを作りリバースする
+
    System.Collections.ArrayList.Adapter(this).Reverse();
+
  }
+
}
+

          
+
class Sample
+
{
+
  static void Main()
+
  {
+
    SortableCollection col = new SortableCollection();
+

          
+
    // コレクション変更のイベントを受け取るハンドラを設定
+
    col.CollectionChanged += PrintCollectionChanged;
+

          
+
    // 要素の追加
+
    col.Add(3);
+
    col.Add(1);
+
    col.Add(0);
+
    col.Add(2);
+
    col.Add(4);
+

          
+
    // ソート
+
    Console.WriteLine("[Sort]");
+

          
+
    col.Sort();
+

          
+
    Print(col);
+

          
+
    // リバース
+
    Console.WriteLine("[Reverse]");
+

          
+
    col.Reverse();
+

          
+
    Print(col);
+
  }
+

          
+
  static void PrintCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
+
  {
+
    Console.WriteLine(e.Action);
+
  }
+

          
+
  static void Print(SortableCollection col)
+
  {
+
    foreach (int e in col)
+
    {
+
      Console.Write("{0}, ", e);
+
    }
+

          
+
    Console.WriteLine();
+
  }
+
}
+
}}
+
#tabpage(VB)
+
#code(vb){{
+
Imports System
+
Imports System.Collections.ObjectModel
+

          
+
Class SortableCollection
+
  Inherits ObservableCollection(Of Integer)
+

          
+
  Public Sub Sort()
+
    ' IListインターフェイスからArrayListのラッパーを作り、既定のIComparer<int>を使ってソートする
+
    System.Collections.ArrayList.Adapter(Me).Sort(System.Collections.Generic.Comparer(Of Integer).Default)
+
  End Sub
+

          
+
  Public Sub Reverse()
+
    ' IListインターフェイスからArrayListのラッパーを作りリバースする
+
    System.Collections.ArrayList.Adapter(Me).Reverse()
+
  End Sub
+
End Class
+

          
+
Class Sample
+
  Shared Sub Main()
+
    Dim col As New SortableCollection()
+

          
+
    ' コレクション変更のイベントを受け取るハンドラを設定
+
    AddHandler col.CollectionChanged, AddressOf PrintCollectionChanged
+

          
+
    ' 要素の追加
+
    col.Add(3)
+
    col.Add(1)
+
    col.Add(0)
+
    col.Add(2)
+
    col.Add(4)
+

          
+
    ' ソート
+
    Console.WriteLine("[Sort]")
+

          
+
    col.Sort()
+

          
+
    Print(col)
+

          
+
    ' リバース
+
    Console.WriteLine("[Reverse]")
+

          
+
    col.Reverse()
+

          
+
    Print(col)
+
  End Sub
+

          
+
  Shared Sub PrintCollectionChanged(sender As Object, e As NotifyCollectionChangedEventArgs)
+
    Console.WriteLine(e.Action)
+
  End Sub
+

          
+
  Shared Sub Print(ByVal col As SortableCollection)
+
    For Each e As Integer In col
+
      Console.Write("{0}, ", e)
+
    Next
+

          
+
    Console.WriteLine()
+
  End Sub
+
End Class
+
}}
+
#tabpage-end
+

          
+
#prompt{{
+
Add
+
Add
+
Add
+
Add
+
Add
+
[Sort]
+
Replace
+
Replace
+
Replace
+
Replace
+
Replace
+
Replace
+
0, 1, 2, 3, 4, 
+
[Reverse]
+
Replace
+
Replace
+
Replace
+
Replace
+
4, 3, 2, 1, 0, 
+
}}
+

          
+

          
 

        

        
 
*ReadOnlyObservableCollection [#ReadOnlyObservableCollection]
*ReadOnlyObservableCollection [#ReadOnlyObservableCollection]
 
&msdn(netfx,type,System.Collections.ObjectModel.ReadOnlyObservableCollection`1){System.Collections.ObjectModel.ReadOnlyObservableCollectionクラス};は名前の通り読み取り専用のObservableCollectionとして動作するコレクションクラスです。 ReadOnlyObservableCollectionクラスは、基になるObservableCollectionをコンストラクタで指定する必要があり、このObservableCollectionに対する読み取り操作のみを許可するラッパーとして動作します。 ObservableCollectionクラスが[[Collectionクラス>programming/netfx/collections/3_objectmodel_1_collection#Collection]]を継承しているのに対し、ReadOnlyObservableCollectionクラスは[[ReadOnlyCollectionクラス>programming/netfx/collections/3_objectmodel_1_collection#ReadOnlyCollection]]を継承しています。 そのため、基本的な操作はReadOnlyCollectionと同じです。
&msdn(netfx,type,System.Collections.ObjectModel.ReadOnlyObservableCollection`1){System.Collections.ObjectModel.ReadOnlyObservableCollectionクラス};は名前の通り読み取り専用のObservableCollectionとして動作するコレクションクラスです。 ReadOnlyObservableCollectionクラスは、基になるObservableCollectionをコンストラクタで指定する必要があり、このObservableCollectionに対する読み取り操作のみを許可するラッパーとして動作します。 ObservableCollectionクラスが[[Collectionクラス>programming/netfx/collections/3_objectmodel_1_collection#Collection]]を継承しているのに対し、ReadOnlyObservableCollectionクラスは[[ReadOnlyCollectionクラス>programming/netfx/collections/3_objectmodel_1_collection#ReadOnlyCollection]]を継承しています。 そのため、基本的な操作はReadOnlyCollectionと同じです。

programming/netfx/tips/convert_unixtime_into_datetime/index.wiki.txt

current previous
5,7 5,6
 

        

        
 
#googleadunit
#googleadunit
 

        

        
+
*変換方法と実装
 
UNIX時間は「UTCでの1970年1月1日 午前0時00分00秒(unix epoch)からの経過秒数」と定義されるため、unix epochの値の入ったDateTime型のインスタンスに、UNIX時間の値を秒数として足してやればDateTime型の値として扱える。
UNIX時間は「UTCでの1970年1月1日 午前0時00分00秒(unix epoch)からの経過秒数」と定義されるため、unix epochの値の入ったDateTime型のインスタンスに、UNIX時間の値を秒数として足してやればDateTime型の値として扱える。
 

        

        
 
同様にDateTime型からUNIX時間を求めるには、&msdn(netfx,member,System.DateTime.ToUniversalTime){ToUniversalTimeメソッド};で&msdn(netfx,member,System.DateTime.Kind){DateTime.Kindプロパティ};を&msdn(netfx,member,System.DateTimeKind.Utc){DateTimeKind.Utc};にしてからunix epochとの差をとれば、その秒数がUNIX時間となる。
同様にDateTime型からUNIX時間を求めるには、&msdn(netfx,member,System.DateTime.ToUniversalTime){ToUniversalTimeメソッド};で&msdn(netfx,member,System.DateTime.Kind){DateTime.Kindプロパティ};を&msdn(netfx,member,System.DateTimeKind.Utc){DateTimeKind.Utc};にしてからunix epochとの差をとれば、その秒数がUNIX時間となる。
81,58 80,3
 
2038/01/19 3:14:07
2038/01/19 3:14:07
 
}}
}}
 

        

        
+
*参考
+
**現在時刻
+
#html{{
+
<dl>
+
  <dt>現在時刻 (現地時間)</dt><dd id="datetimenow_local"></dd>
+
  <dt>現在時刻 (UTC)</dt><dd id="datetimenow_utc"></dd>
+
  <dt>UNIX時間</dt><dd id="datetimenow_unixtime"></dd>
+
</dl>
+
}}
+

          
+
#javascript(csview,noscript=実行するにはJavaScriptを有効にしてください){{
+
$(function(){
+
  update_datetime();
+
  setInterval(update_datetime, 1000);
+

          
+
  function update_datetime()
+
  {
+
    var d = new Date();
+
    $('#datetimenow_local').text(d.toLocaleString());
+
    $('#datetimenow_utc').text(d.toUTCString());
+
    $('#datetimenow_unixtime').text(Math.floor(d.valueOf() / 1000));
+
  }
+
});
+
}}
+

          
+
**UNIX時間→現在時刻
+
#html{{
+
<form action="">
+
  <dl>
+
    <dt>UNIX時間</dt>
+
    <dd>
+
      <input type="text" id="convert_unixtime_input" value="" size="10" />
+
      <input type="button" value="変換" onclick="convert_unixtime2datetime();"/>
+
      <input type="reset" value="クリア"/>
+
    </dd>
+
    <dt>現地時間</dt><dd id="convert_unixtime_local">-</dd>
+
    <dt>UTC</dt><dd id="convert_unixtime_utc">-</dd>
+
  </dl>
+
</form>
+
}}
+

          
+
#javascript(csview,noscript=実行するにはJavaScriptを有効にしてください){{
+
$(function(){
+
  $('#convert_unixtime_input').val(Math.floor((new Date()).valueOf() / 1000));
+
});
+

          
+
function convert_unixtime2datetime()
+
{
+
  var d = new Date($('#convert_unixtime_input').val() * 1000);
+

          
+
  $('#convert_unixtime_local').text(d.toLocaleString());
+
  $('#convert_unixtime_utc').text(d.toUTCString());
+
}
+
}}
+